Установите локатор оси x с часовыми интервалами на подспоте matplotlib - PullRequest
0 голосов
/ 07 июня 2019

Я пытаюсь создать фигуру с четырьмя подсюжетами, используя подход, основанный на объектах Matplotlib. У меня проблемы с установкой оси X на часовые маркеры на каждом графике. В моем нынешнем коде почасовые отметки сохраняются только на последнем из четырех вспомогательных участков

У меня есть список, который содержит четыре кадра данных, которые были прочитаны из CSV. Я использовал pd.to_datetime для создания индекса. Нет проблем. Я могу перебрать четыре кадра данных и вывести свою переменную y (TS_comp) в зависимости от времени. это работает нормально, и я получаю дату / время на каждой оси X. Но я хочу, чтобы на каждой оси х были только часовые метки. Когда я добавляю код в цикл для установки основного локатора, это заканчивается тем, что метки оси X стираются на первых трех подсюжетах. Две строки кода из цикла ниже:

ax.xaxis.set_major_locator(hours)
ax.xaxis.set_major_formatter(mdates.DateFormatter('%H'))

Я не понимаю, почему это происходит, так как каждый раз, когда он проходит цикл, он должен обращаться к другому объекту оси. Обратите внимание, что временные диапазоны по оси X различны, поэтому непросто разделить ось X между вспомогательными участками.

fig, ax = plt.subplots(nrows=2, ncols=2)
i=0
hours = mdates.HourLocator(interval = 1)
for ax in fig.get_axes():
   ax.plot(dfs[i].TS_comp,'k-',markersize = 0.5)   
   ax.xaxis.set_major_locator(hours)
   ax.xaxis.set_major_formatter(mdates.DateFormatter('%H'))
   i=i+1;

Ожидайте получения почасовых маркеров на каждом из вспомогательных участков, заканчивающихся ежечасными маркерами только на последнем участке

enter image description here

...