У меня есть Pandas dataframe данных OHL C, которые я обычно использую для создания свечного графика, с ценой на оси Y и временем на оси X. Просто из любопытства сегодня я пытался увидеть, могу ли я вместо создания диаграммы свечей использовать тот же фрейм данных для создания диаграммы тепловой карты.
Конечно, все значения тепловой карты будут быть 0,0, поэтому тепловая карта будет пустой, но я хочу проверить, могу ли я построить диаграмму с осями X и Y и смогу ли я позже заполнить значения на тепловой карте, используя эти значения XY.
Вот образец pandas фрейма данных:
Date Open High Low Close Volume
0 2020-06-19 10:40:00 9310.57000000 9316.87000000 9310.52000000 9314.71000000 109.57386800
1 2020-06-19 10:45:00 9314.71000000 9324.21000000 9306.56000000 9320.25000000 129.81644400
2 2020-06-19 10:50:00 9320.25000000 9323.86000000 9314.26000000 9317.37000000 112.90924000
3 2020-06-19 10:55:00 9317.31000000 9319.02000000 9310.05000000 9314.79000000 157.48792800
4 2020-06-19 11:00:00 9314.80000000 9342.17000000 9314.80000000 9334.07000000 301.98549100
5 2020-06-19 11:05:00 9334.07000000 9355.90000000 9334.06000000 9343.76000000 624.54143900
6 2020-06-19 11:10:00 9343.77000000 9353.36000000 9336.38000000 9345.71000000 153.59121000
7 2020-06-19 11:15:00 9346.72000000 9438.30000000 9346.72000000 9398.82000000 1459.34823300
8 2020-06-19 11:20:00 9398.83000000 9406.86000000 9385.25000000 9394.99000000 307.34372900
9 2020-06-19 11:25:00 9395.00000000 9397.81000000 9377.06000000 9386.17000000 215.67805500
10 2020-06-19 11:30:00 9386.18000000 9396.84000000 9351.88000000 9365.08000000 324.14550500
11 2020-06-19 11:35:00 9367.15000000 9379.82000000 9358.21000000 9371.96000000 188.80223900
12 2020-06-19 11:40:00 9371.97000000 9380.00000000 9368.22000000 9371.03000000 95.10065000
13 2020-06-19 11:45:00 9370.24000000 9378.87000000 9358.00000000 9358.86000000 111.93088900
14 2020-06-19 11:50:00 9359.32000000 9367.78000000 9342.52000000 9351.47000000 273.59986200
15 2020-06-19 11:55:00 9351.47000000 9365.68000000 9351.47000000 9363.57000000 77.12252700
16 2020-06-19 12:00:00 9363.82000000 9373.21000000 9355.77000000 9361.27000000 166.72208600
17 2020-06-19 12:05:00 9361.28000000 9381.41000000 9361.27000000 9371.41000000 98.49074300
18 2020-06-19 12:10:00 9371.41000000 9378.96000000 9363.94000000 9373.19000000 100.48336700
19 2020-06-19 12:15:00 9373.14000000 9376.86000000 9361.27000000 9362.64000000 73.68976300
20 2020-06-19 12:20:00 9362.63000000 9376.27000000 9358.01000000 9371.64000000 92.10625000
21 2020-06-19 12:25:00 9371.64000000 9371.64000000 9362.10000000 9366.00000000 61.70933400
22 2020-06-19 12:30:00 9366.00000000 9377.15000000 9365.99000000 9376.50000000 74.94230300
23 2020-06-19 12:35:00 9376.50000000 9381.93000000 9367.90000000 9370.82000000 138.87545100
24 2020-06-19 12:40:00 9370.48000000 9375.52000000 9363.57000000 9369.87000000 131.79038700
25 2020-06-19 12:45:00 9369.88000000 9385.96000000 9361.52000000 9381.88000000 138.91011300
26 2020-06-19 12:50:00 9380.52000000 9394.99000000 9380.46000000 9384.19000000 269.31494300
27 2020-06-19 12:55:00 9383.80000000 9392.88000000 9378.42000000 9391.73000000 109.40249800
28 2020-06-19 13:00:00 9391.69000000 9400.00000000 9389.98000000 9397.36000000 198.99596400
29 2020-06-19 13:05:01 9397.40000000 9403.00000000 9397.40000000 9397.60000000 58.66688600
А вот пример тепловой карты Matplotlib из документов MPL:
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
# sphinx_gallery_thumbnail_number = 2
vegetables = ["cucumber", "tomato", "lettuce", "asparagus",
"potato", "wheat", "barley"]
farmers = ["Farmer Joe", "Upland Bros.", "Smith Gardening",
"Agrifun", "Organiculture", "BioGoods Ltd.", "Cornylee Corp."]
harvest = np.array([[0.8, 2.4, 2.5, 3.9, 0.0, 4.0, 0.0],
[2.4, 0.0, 4.0, 1.0, 2.7, 0.0, 0.0],
[1.1, 2.4, 0.8, 4.3, 1.9, 4.4, 0.0],
[0.6, 0.0, 0.3, 0.0, 3.1, 0.0, 0.0],
[0.7, 1.7, 0.6, 2.6, 2.2, 6.2, 0.0],
[1.3, 1.2, 0.0, 0.0, 0.0, 3.2, 5.1],
[0.1, 2.0, 0.0, 1.4, 0.0, 1.9, 6.3]])
fig, ax = plt.subplots()
im = ax.imshow(harvest)
# We want to show all ticks...
ax.set_xticks(np.arange(len(farmers)))
ax.set_yticks(np.arange(len(vegetables)))
# ... and label them with the respective list entries
ax.set_xticklabels(farmers)
ax.set_yticklabels(vegetables)
# Rotate the tick labels and set their alignment.
plt.setp(ax.get_xticklabels(), rotation=45, ha="right",
rotation_mode="anchor")
# Loop over data dimensions and create text annotations.
for i in range(len(vegetables)):
for j in range(len(farmers)):
text = ax.text(j, i, harvest[i, j],
ha="center", va="center", color="w")
ax.set_title("Harvest of local farmers (in tons/year)")
fig.tight_layout()
plt.show()