Как создать тепловую карту из кадра данных Pandas с осями даты и времени? - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь создать тепловую карту из кадра данных панд, как этот

datetime
2008-12-31 21:15:00    0
2008-12-31 21:45:00    0
2008-12-31 22:15:00    0
2008-12-31 22:45:00    0
2008-12-31 23:15:00    0
2008-12-31 23:45:00    0
2009-01-01 00:15:00    0
2009-01-01 00:45:00    0
2009-01-01 01:15:00    0
2009-01-01 01:45:00    0
...
Freq: 30T, Name: GHI, dtype: int64

В кадре данных может быть сотни тысяч строк.Затем я могу создать 2d массив и построить его:

array2d = pd.pivot(index=df.index.time, columns=df.index[:].date, values=df.values)
ax.pcolormesh(array2d,cmap='jet')

Array2d:

          2008-12-31  2009-01-01     ...      2009-12-30  2009-12-31
00:15:00         NaN         0.0     ...             0.0         0.0
00:45:00         NaN         0.0     ...             0.0         0.0
01:15:00         NaN         0.0     ...             0.0         0.0
01:45:00         NaN         0.0     ...             0.0         0.0
02:15:00         NaN         0.0     ...             0.0         0.0
02:45:00         NaN         0.0     ...             0.0         0.0
03:15:00         NaN         0.0     ...             0.0         0.0
03:45:00         NaN         0.0     ...             0.0         0.0
...
[48 rows x 366 columns]

Мой график выглядит так: heatmap

Но яхотел бы иметь по осям x и y даты и время от array2d, а не числа.Спасибо

1 Ответ

0 голосов
/ 12 октября 2018

Работает ли добавление:

ax.set_yticklabels(array2d.index)
ax.set_xticklabels(array2d.columns) # may require .values at the end

в ваш код?Вы не указали, что такое метки x и y, и, следовательно, matplotlib использует числовые значения, а не дату / время, как вы этого хотите.Возможно, вам придется изменить количество тиков x и y, используя ax.set_xticks().

. Нечто подобное оказывает такое же влияние, но позволяет вам установить количество тиков и метки:

plt.pcolor(array2d)
plt.yticks(np.arange(1, len(array2d.index), 10), arra2d.index)
plt.xticks(np.arange(1, len(array2d.columns), 10), array2d.columns)
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...