【发布时间】:2021-09-03 20:25:36
【问题描述】:
我不明白,如何使用 matplotlib 正确绘制我的热图 (pcolormesh)。我希望刻度线的标签位于相应框下方/旁边的中心 - 并且只有我给定的数据,而不是一些人为扩展的范围。
在docs 中,我找到了一个示例,它对我来说稍微修改为浮点数就可以了。
Z = []
for i in range(1, 7):
Z.append([j*i for j in range(1, 11)])
Z = np.asarray(Z)
x = np.linspace(0.1, 1.0, num=10)
y = np.linspace(0.1, 0.6, num=6)
fig, ax = plt.subplots()
ax.pcolormesh(x, y, Z, vmin=np.min(Z), edgecolors='w', linewidths=0.5, vmax=np.max(Z), shading='auto')
plt.show()
但是,一旦我使用自己的数据,就会出现一些奇怪的行为
data = pd.DataFrame(index=[0, 0.25, 0.5], data={0: [31.40455938, 101.43291831, 101.67128077], 0.25: [31.40455938, 89.81448724, 99.65066293], 0.5: [31.40455938, 57.01406046, 101.47536496]})
x = data.columns.astype(np.float64).to_numpy()
y = data.index.astype(np.float64).to_numpy()
z = data.to_numpy()
cmap = LinearSegmentedColormap.from_list('G2R', ["green", "red"])
fig, ax = plt.subplots()
ax.pcolormesh(x, y, z, shading='auto', cmap=cmap, edgecolors='w', linewidths=0.5, vmin=0, vmax=100) # shading='gouraud'
ax.set_title('not what i want')
ax.set_xlabel('X')
ax.set_ylabel('Y')
plt.show()
如何让我的热图简单地将给定的浮点数绘制为居中刻度标签,而没有那些不需要的浮点数?我真的想指定我的刻度标签(浮点数或字符串)以框为中心显示。我认为必须有一种方法可以将列表或数组指定为刻度标签。我该如何做到这一点?
【问题讨论】:
标签: python matplotlib format data-visualization heatmap