[英]Seaborn Heatmap: Move colorbar on top of the plot
我有一个使用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()
查看文档,我们找到了一个参数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"))
完整的例子:
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()
你必须使用轴分隔器将颜色条放在一个seaborn图上。 寻找评论。
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
from mpl_toolkits.axes_grid1.axes_divider import make_axes_locatable
from mpl_toolkits.axes_grid1.colorbar import colorbar
# Create data
df = pd.DataFrame(np.random.random((5,5)), columns=["a","b","c","d","e"])
# Use axes divider to put cbar on top
# plot heatmap without colorbar
ax = sns.heatmap(df, cbar = False)
# split axes of heatmap to put colorbar
ax_divider = make_axes_locatable(ax)
# define size and padding of axes for colorbar
cax = ax_divider.append_axes('top', size = '5%', pad = '2%')
# make colorbar for heatmap.
# Heatmap returns an axes obj but you need to get a mappable obj (get_children)
colorbar(ax.get_children()[0], cax = cax, orientation = 'horizontal')
# locate colorbar ticks
cax.xaxis.set_ticks_position('top')
plt.show()
欲了解更多信息,请阅读matplotlib的官方示例: https ://matplotlib.org/gallery/axes_grid1/demo_colorbar_with_axes_divider.html ? highlight = demo%20colorbar%20axes%20divider
像sns.heatmap(df, cbar_kws = {'orientation':'horizontal'})
类的热图参数是无用的,因为它将颜色条放在底部位置。
我想展示子图的示例,它允许控制图的大小以保留热图的方形几何。 这个例子非常简短:
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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.