如何去除色条但保持热力图位置不变

14

我在图中绘制了带有3个坐标轴的图形。每个坐标轴都是一个具有相同颜色条的热力图。我想只保留第三个坐标轴的颜色条,并隐藏第一个和第二个颜色条(但保持热力图位置不变)。我该如何做?

这是我的代码:

fig=plt.figure()
grid = plt.GridSpec(4, 6)

plt.subplot(grid[0:2,0:5])
ax1=sns.heatmap(df_norm, cmap='Reds', vmin=0.05, vmax=0.7)
ax1.axes.get_yaxis().set_visible(False)
ax1.xaxis.tick_top()
ax1.set_xticklabels(col, rotation=90)

plt.subplot(grid[2,0:5])
ax2=sns.heatmap(df_tgfup, cmap='Reds', vmin=0.05, vmax=0.7)
ax2.axes.get_xaxis().set_visible(False)
ax2.axes.get_yaxis().set_visible(False)
ax2.xaxis.tick_top()
ax2.set_xticklabels(col, rotation=90)

plt.subplot(grid[3,0:5])
ax3=sns.heatmap(df_tgfdown, cmap='Reds', vmin=0.05, vmax=0.7)
ax3.axes.get_xaxis().set_visible(False)
ax3.axes.get_yaxis().set_visible(False)
ax3.xaxis.tick_top()
ax3.set_xticklabels(col, rotation=90)

这是我制作的图:
我制作的图

这是我想要制作的图:
我想要制作的图


23
在前两个热力图语句中尝试使用 cbar=False - Scott Boston
1
我尝试过,但那会改变前两个热力图的位置和大小。 - Shoujun Gu
2个回答

1
你可以在需要隐藏热力图的颜色条的地方传入cbar=False参数给sns.heatmap()函数。
例如,
ax1=sns.heatmap(df_norm, cmap='Reds', cbar=False, vmin=0.05, vmax=0.7)
ax2=sns.heatmap(df_tgfup, cmap='Reds', cbar=False, vmin=0.05, vmax=0.7)

虽然ax3将保持不变。

如果要保持子图1和2的位置不变,您可以玩弄plt.subplots_adjust(right=num);其中num是子图右边缘的位置,作为你想调整子图的一部分的图形宽度的一部分。


0

颜色条被定义为图中的轴。您可以在fig.axes中访问它们。

[<AxesSubplot:>, <AxesSubplot:label='<colorbar>'>, <AxesSubplot:>, <AxesSubplot:label='<colorbar>'>, <AxesSubplot:>, <AxesSubplot:label='<colorbar>'>]

您可以使用set_visible(False)方法来隐藏它们:

fig=plt.figure()
grid = plt.GridSpec(4, 6)

df_norm = pd.DataFrame(np.random.randint(0,10,size=(10, 10)), columns=list('ABCDEFGHIJ'))

plt.subplot(grid[0:2,0:5])
ax1=sns.heatmap(df_norm, cmap='Reds', vmin=0.05, vmax=0.7)
ax1.axes.get_yaxis().set_visible(False)
ax1.xaxis.tick_top()
#ax1.set_xticklabels(col, rotation=90)
fig.axes[1].set_visible(False)

plt.subplot(grid[2,0:5])
ax2=sns.heatmap(df_norm, cmap='Reds', vmin=0.05, vmax=0.7)
ax2.axes.get_xaxis().set_visible(False)
ax2.axes.get_yaxis().set_visible(False)
ax2.xaxis.tick_top()
#ax2.set_xticklabels(col, rotation=90)
fig.axes[3].set_visible(False)

plt.subplot(grid[3,0:5])
ax3=sns.heatmap(df_norm, cmap='Reds', vmin=0.05, vmax=0.7)
ax3.axes.get_xaxis().set_visible(False)
ax3.axes.get_yaxis().set_visible(False)
ax3.xaxis.tick_top()
#ax3.set_xticklabels(col, rotation=90)

multiple heatmaps with hidden colorbars


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接