Seaborn 热图:在图的顶部移动颜色条

新手上路,请多包涵

我有一个使用 seaborn 库创建的基本热图,我想将颜色条从默认的垂直右侧移动到热图上方的水平颜色条。我怎样才能做到这一点?

下面是一些示例数据和默认示例:

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

# Create data
df = pd.DataFrame(np.random.random((5,5)), columns=["a","b","c","d","e"])

# Default heatma
ax = sns.heatmap(df)
plt.show()

默认热图

原文由 rer 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 984
2 个回答

查看 文档 我们发现一个参数 cbar_kws 。这允许指定传递给 matplotlib 的 fig.colorbar 方法的参数。

cbar_kws :键字典,值映射,可选。 fig.colorbar 的关键字参数。

所以我们可以使用 --- 的任何可能参数,为 cbar_kws fig.colorbar 提供字典。

在这种情况下,您需要 location="top" 将颜色条放在顶部。因为 colorbar 默认情况下使用 gridspec 定位颜色条,然后不允许设置位置,我们需要关闭该 gridspec ( use_gridspec=False )。

 sns.heatmap(df, cbar_kws = dict(use_gridspec=False,location="top"))

完整示例:

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

df = pd.DataFrame(np.random.random((5,5)), columns=["a","b","c","d","e"])

ax = sns.heatmap(df, cbar_kws = dict(use_gridspec=False,location="top"))

plt.show()

在此处输入图像描述

原文由 ImportanceOfBeingErnest 发布,翻译遵循 CC BY-SA 3.0 许可协议

我想展示带有子图的示例,它允许控制图的大小以保留热图的方形几何形状。这个例子很短:

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

# Create data
df = pd.DataFrame(np.random.random((5,5)), columns=["a","b","c","d","e"])

# Define two rows for subplots
fig, (cax, ax) = plt.subplots(nrows=2, figsize=(5,5.025),  gridspec_kw={"height_ratios":[0.025, 1]})

# Draw heatmap
sns.heatmap(df, ax=ax, cbar=False)

# colorbar
fig.colorbar(ax.get_children()[0], cax=cax, orientation="horizontal")

plt.show()

在此处输入图像描述

原文由 pcu 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏