Seaborn Heatmap:在绘图顶部移动颜色条

r3r*_*son 7 python matplotlib python-2.7 pandas 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()
Run Code Online (Sandbox Code Playgroud)

默认热图

Imp*_*est 11

查看文档,我们找到了一个论点cbar_kws.这允许指定传递给matplotlib fig.colorbar方法的参数.

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

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

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

sns.heatmap(df, cbar_kws = dict(use_gridspec=False,location="top"))
Run Code Online (Sandbox Code Playgroud)

完整的例子:

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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 对于像我这样实际上想将颜色条放在底部而不是“location =“top””的人,请添加“orientation =”horizo​​ntal”` (3认同)

pcu*_*pcu 6

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

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()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明