如何向热图中添加第二个比例?
How to add a second scale to a heatmap?
这样我创建了 heatmap
:
fig = plt.figure(figsize = (8.27, 13.69), dpi = 100)
fig, ax = plt.subplots(1,1,figsize = (8.27, 13.69))
fig = plt.gcf()
heatplot = ax.imshow(c, cmap='rainbow', aspect='auto',\
norm=MidpointNormalize(midpoint=0.90))
c
是具有 heatmap
值的数组,归一化为一。
对于 ax.set_xticklabels()
、ax.set_xticks()
、ax.set_yticklabels()
和 ax.set_yticks()
,我已将轴添加到其 heatmap
。现在我想添加第二个 y
轴。 colorbar
的方向是水平的。
编辑:
在 Bazingaa 的帮助下,我得到了第二个 y 轴,但有一个偏移量:
ax1.set_yticks(np.arange(len(TITLES)), minor=False)
将刻度线居中。
要添加第二个 y
轴,您必须使用:
ax2 = ax1.twinx()
其中 ax1
是 current/first 轴。在你的例子中 ax1
是 ax
。然后,如果您使用 ax2
绘制数据,y 值将显示在右侧 y
轴上。更多信息 here
以这种方式解决了我问题的已编辑部分:
ax2.set_ylim(ax1.get_ylim()) <-- This solvs the "Offset" between both scales
ax2.set_yticks(np.arange(len(ELEMENT[1])), minor=False)
ax2.set_yticklabels(ELEMENT[1])
我在哪里找到的?: How do I align gridlines for two y-axis scales using Matplotlib?
回答者:Hugo Alain Oliva
我认为使用子图不会造成混淆,所以并排放置了两个热图
这样我创建了 heatmap
:
fig = plt.figure(figsize = (8.27, 13.69), dpi = 100)
fig, ax = plt.subplots(1,1,figsize = (8.27, 13.69))
fig = plt.gcf()
heatplot = ax.imshow(c, cmap='rainbow', aspect='auto',\
norm=MidpointNormalize(midpoint=0.90))
c
是具有 heatmap
值的数组,归一化为一。
对于 ax.set_xticklabels()
、ax.set_xticks()
、ax.set_yticklabels()
和 ax.set_yticks()
,我已将轴添加到其 heatmap
。现在我想添加第二个 y
轴。 colorbar
的方向是水平的。
编辑:
在 Bazingaa 的帮助下,我得到了第二个 y 轴,但有一个偏移量:
ax1.set_yticks(np.arange(len(TITLES)), minor=False)
将刻度线居中。
要添加第二个 y
轴,您必须使用:
ax2 = ax1.twinx()
其中 ax1
是 current/first 轴。在你的例子中 ax1
是 ax
。然后,如果您使用 ax2
绘制数据,y 值将显示在右侧 y
轴上。更多信息 here
以这种方式解决了我问题的已编辑部分:
ax2.set_ylim(ax1.get_ylim()) <-- This solvs the "Offset" between both scales
ax2.set_yticks(np.arange(len(ELEMENT[1])), minor=False)
ax2.set_yticklabels(ELEMENT[1])
我在哪里找到的?: How do I align gridlines for two y-axis scales using Matplotlib?
回答者:Hugo Alain Oliva
我认为使用子图不会造成混淆,所以并排放置了两个热图