Это мой первый вопрос, задающий вопрос Python онлайн. Я всегда мог найти ответы на свои вопросы на этом сайте ... до сих пор. Я пытаюсь построить данные, которые были разработаны с использованием метода последовательностей индексов, который является методом прогнозирования исторических данных в будущем. У меня есть 105 диаграмм, каждый из которых содержит 47 лет данных. Первая диаграмма x-axis варьируется от 1906-1952, второй 1907-1953, от 1908-1954 и т. Д. Моя проблема заключается в том, когда я добираюсь до 1963 года, когда 47-й год возвращается к началу (1906). Таким образом, график xaxis 1963 года будет выглядеть так: 1963, 1964, 1965, ... 2008,2009,2010,1906. Диаграмма xaxis 1964 года будет выглядеть так: 1964, 1965, 1967, ... 2009, 2010, 1906, 1907.Пользовательский X-Axis Диапазон дат Использование Matplotlib
Я могу получить данные для построения штрафа, мне просто нужно выяснить, как отформатировать xaxis чтобы принять уникальную обертку, когда это происходит.
Есть три диаграммы на странице (ax1, ax2 и ax3). yearList и chartList - это данные x и y, соответственно. Код ниже является частью цикла for, который создает наборы данных yearList и chartList и создает диаграммы с неправильными ярлыками xaxis.
import matplotlib, pyPdf
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import matplotlib.ticker as tkr
from matplotlib.ticker import MultipleLocator
import matplotlib.figure as figure
plt.rcParams['font.family'] = 'Times New Roman'
locator = mdates.YearLocator(2)
minorLocator = MultipleLocator(1)
dateFmt = mdates.DateFormatter('%Y')
datemin = min(yearList)
datemax = max(yearList)
fig, (ax1, ax2, ax3) = plt.subplots(3,1,sharex=False)
#3X3 Top to bottom
ax1.bar(yearList1, chartList1, width=200, align='center')
ax2.bar(yearList2, chartList2, width=200, align='center')
ax3.bar(yearList3, chartList3, width=200, align='center')
axList = [ax1, ax2, ax3]
for ax in axList:
ax.xaxis.set_major_locator(locator)
ax.xaxis.set_major_formatter(dateFmt)
ax.xaxis.set_minor_locator(minorLocator)
ax.set_xlim(datemin - timedelta(365), datemax + timedelta(365))
ax.grid(1)
ax.set_ylim(0,30)
ax.set_yticks(np.arange(0, 31, 5))
ax.yaxis.set_minor_locator(minorLocator)
#Rotate tick labels 90 degrees
xlabels = ax.get_xticklabels()
for label in xlabels:
label.set_rotation(90)
fig.tight_layout()
plt.subplots_adjust(right=0.925)
plt.savefig('%s\\run.pdf' % outDir)
Что это эти данные, которые вы хотите обернуть так? – tacaswell