一个颜色条用于Sub中的seaborn热图

2024-05-17 05:04:47 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是显示每个子批次的颜色栏的示例:

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.random((10,10,)))

fig,axn = plt.subplots(2, 2, sharex=True, sharey=True)

for ax in axn.flat:
    sns.heatmap(df, ax=ax)

enter image description here

如何删除每个子批次的色条?我只想要一个垂直或水平方向的颜色条。我知道我可以通过fig.get_axes()[:-4]访问每个colorbar轴,但如何才能将其完全从绘图中删除?我认为在调用heatmap时没有选择不绘制色条的选项。


Tags: importtruedf颜色asnpfigplt
1条回答
网友
1楼 · 发布于 2024-05-17 05:04:47

cbar参数控制是否应添加colorbar,cbar_ax参数可以选择指定colorbar应指向的轴。所以,你可以:

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.random((10,10,)))

fig, axn = plt.subplots(2, 2, sharex=True, sharey=True)
cbar_ax = fig.add_axes([.91, .3, .03, .4])

for i, ax in enumerate(axn.flat):
    sns.heatmap(df, ax=ax,
                cbar=i == 0,
                vmin=0, vmax=1,
                cbar_ax=None if i else cbar_ax)

fig.tight_layout(rect=[0, 0, .9, 1])

(您将在这里得到关于tight_layout的警告,但实际上是正确的,因为我们显式地放置了cbar_ax。如果不喜欢看到警告,也可以在绘制之前调用tight_layout,但不会很紧)。

相关问题 更多 >