Подплотинг форматирования даты в Axis - PullRequest
0 голосов
/ 24 мая 2019

У меня есть график 2x2 с датой по оси X на обоих графиках.Я использовал datetime.strptime для перевода строки в type = datetime.datetime объектный формат.

Однако я планирую иметь около 12 подсюжетов, и делать это следующим образом неаккуратно.

Есть ли лучший «питонический» способ?

Вот что у меня есть:

 xx.xaxis.set_major_formatter(mdates.DateFormatter('%d/%m/%y %H:%M'))
 plt.grid(True)
 plt.ylabel('paramA',fontsize=8, color = "blue")
 plt.tick_params(axis='both', which='major', labelsize=8)
 plt.plot(date_list, myarray[:,0], '-b', label='paramA')
 plt.setp(plt.xticks()[1], rotation=30, ha='right') # ha is the same as horizontalalignment

 xx = plt.subplot(2,1,2)
 xx.xaxis.set_major_formatter(mdates.DateFormatter('%d/%m/%y %H:%M'))
 plt.grid(True)
 plt.ylabel('paramB', 'amount of virtual mem',fontsize=8, color = "blue")
 plt.tick_params(axis='both', which='major', labelsize=8)
 plt.plot(date_list, myarray[:,1], '-y', label='paramB')plt.setp(plt.xticks()[1], rotation=30, ha='right') # ha is the same as horizontalalignment ```

PS: Сначала я попытался определить сюжет следующим образом.Однако это не сработало:

fig, axs = plt.subplots(2,1,figsize=(15,15)) 
plt.title('My graph')     
for ax in enumerate(axs):
   ax.xaxis.set_major_formatter(mdates.DateFormatter('%d/%m/%y %H:%M:%S'))

1 Ответ

1 голос
/ 24 мая 2019

Вы не предоставили никаких данных или Минимальный, Полный и Проверяемый пример . Тем не менее, что-то подобное должно работать. Вы можете расширить его до своего реального случая, используя желаемое количество строк и столбцов в первой команде.

fig, axes = plt.subplots(nrows=2, ncols=3)
labels = ['paramA', 'paramB', 'paramC', 'paramD', 'paramE', 'paramF']

for i, ax in enumerate(axes.flatten()):
    ax.xaxis.set_major_formatter(mdates.DateFormatter('%d/%m/%y %H:%M'))
    ax.grid(True)
    ax.set_ylabel(labels[i], fontsize=8, color="blue")
    ax.tick_params(axis='both', which='major', labelsize=8)
    ax.plot(date_list, myarray[:,i], '-b', label=labels[i])
    plt.setp(plt.xticks()[1], rotation=30, ha='right') # ha is the same as horizontalalignment

EDIT:

Измените свой код на

fig, axs = plt.subplots(2,1,figsize=(15,15)) 
plt.title('My graph')     
for ax in axs:
   ax.xaxis.set_major_formatter(mdates.DateFormatter('%d/%m/%y %H:%M:%S'))
...