मैं बार प्लॉट के लिए मैन्युअल रूप से टिकर सेट करने का प्रयास कर रहा हूं। मैं FunFormatter फ़ंक्शन का उपयोग कर रहा हूं। फिर भी, मैंने पाया कि फ़नफ़ॉर्मेटर का व्यवहार बहुत अजीब है। एक्स-अक्ष श्रेणी के लिए 0 से 91 तक, मैंने पाया कि फ़नफॉर्मेटर निम्नलिखित लौटाता है ... कोई भी विचार यह कैसे काम करता है। यह रहा डेटा फ़ाइल के लिए लिंक अग्रिम में धन्यवाद

-10,0 0,0 10,0 20,0 30,0 40,0 50,0 60,0 70,0 80,0 90,0 100,0 28,805725806451605 38,374395161290316 41,22463709677419 47,128709677419344 48,55383064516128 49,36818548387095 51,20048387096774 52,42201612903225 53,439959677419345 53,439959677419345 53,03278225806451 53,643548387096764 56,08661290322579 59,75120967741935 64,63733870967741 70,54141129032257 76,85266129032257 83,16391129032257 95,58282258064514

import numpy as np
import matplotlib.pyplot as plt
import pandas as p
import matplotlib.mlab as m
import matplotlib
import matplotlib.ticker as ticker

file1=np.load('numofdays.npz')
fig,axes=plt.subplots(ncols=1)
ax=axes
x=np.arange(len(file1['arr_0']))
y=np.array(file1['arr_0'])
ax.bar(x,y)
mydates=p.DatetimeIndex(file1['arr_1'])

def mme(xx,pos=None):
    print(xx)
#    print(mydates[int(xx-9)].strftime('%Y-%m-%d'))
    return mydates[int(xx-9)].strftime('%Y-%m-%d')

ax.xaxis.set_major_locator(ticker.MultipleLocator(10))
ax.xaxis.set_major_formatter(ticker.FuncFormatter(mme))
fig.autofmt_xdate()
2
Kernel 20 अक्टूबर 2018, 05:39

1 उत्तर

सबसे बढ़िया उत्तर

संयुक्त राष्ट्रसमान अंतराल वाले डेटा के लिए केवल हर दसवें लेबल को दिखाना थोड़ा खतरनाक है, क्योंकि आप नहीं जानते कि बीच में क्या होता है।

हालाँकि, अपनी स्क्रिप्ट को चलाने के लिए, आपको निश्चित रूप से यह सुनिश्चित करना होगा कि स्थिति xx सरणी की एक मान्य अनुक्रमणिका है। जैसे स्थिति 100 मान्य नहीं है, क्योंकि आपके सरणी में केवल 92 तत्व हैं। इसके लिए आप केवल एक शर्त का परिचय दे सकते हैं।

import numpy as np
import matplotlib.pyplot as plt
import pandas as p

import matplotlib.ticker as ticker

file1=np.load('data/numofdays.npz')

fig,ax=plt.subplots(ncols=1)

x=np.arange(len(file1['arr_0']))
y=np.array(file1['arr_0'])
ax.bar(x,y)
mydates=p.DatetimeIndex(file1['arr_1'])

def mme(xx,pos=None):
    if int(xx) in x:
        return mydates[int(xx)].strftime('%Y-%m-%d')
    else:
        return ""

ax.xaxis.set_major_locator(ticker.MultipleLocator(10))
ax.xaxis.set_major_formatter(ticker.FuncFormatter(mme))
fig.autofmt_xdate()
plt.show()

enter image description here

एक विकल्प के रूप में, मैं निश्चित रूप से वास्तविक तिथियों की साजिश रचने पर विचार करूंगा।

import numpy as np
import matplotlib.pyplot as plt
import pandas as p

file1=np.load('data/numofdays.npz')

fig,ax=plt.subplots(ncols=1)

y=np.array(file1['arr_0'])

mydates = p.DatetimeIndex(file1['arr_1'])

ax.bar(mydates,y, width=60)

fig.autofmt_xdate()
plt.show()

enter image description here

3
ImportanceOfBeingErnest 20 अक्टूबर 2018, 04:02