Matplotlib Seaborn Heatmap Colorbar自定义位置

Matplotlib Seaborn Heatmap Colorbar自定义位置,matplotlib,seaborn,colorbar,Matplotlib,Seaborn,Colorbar,鉴于这一热图: import numpy as np; np.random.seed(0) import seaborn as sns; sns.set_theme() uniform_data = np.random.rand(10, 12) ax = sns.heatmap(uniform_data) 我想把颜色条放在一个自定义位置(每个轴/打印坐标)和一个自定义大小。 具体地说,我希望它在左上角(热图之外)保持水平,尺寸较小(但尚未定义)。这可能吗?我知道有一些通用的位置参数,但这些参数

鉴于这一热图:

import numpy as np; np.random.seed(0)
import seaborn as sns; sns.set_theme()
uniform_data = np.random.rand(10, 12)
ax = sns.heatmap(uniform_data)
我想把颜色条放在一个自定义位置(每个轴/打印坐标)和一个自定义大小。 具体地说,我希望它在左上角(热图之外)保持水平,尺寸较小(但尚未定义)。这可能吗?我知道有一些通用的位置参数,但这些参数不允许我做什么。我还知道我可以用
plt.colorbar()
定义一个单独的颜色条,但我也不知道如何自定义它的位置

提前谢谢

您可以使用为颜色条创建一个与子批次完美匹配的ax。在“cax”中,是颜色条的“ax”。在seaborn's中,
cbar_ax
是放置颜色条的位置(当未给出
cbar_ax
时,matplotlib选择默认位置)
cbar_kw
可以为颜色栏设置其他关键字,例如设置水平方向

导入matplotlib.pyplot作为plt
从mpl_toolkits.axes_grid1.inset_定位器导入inset_axes
输入numpy作为np;np.random.seed(0)
作为sns导入seaborn;sns.set_主题()
统一数据=np.rand.rand(10,12)
图,ax=plt.子批次()
cax=插入轴(ax,
宽度=“40%”,#宽度:父#bbox宽度的40%
高度=“10%”,#高度:父#bbox高度的10%
loc='左下',
bbox_至_锚=(0,1.1,1,1),
bbox_transform=ax.transAxes,
borderpad=0,
)
热图(统一数据,ax=ax,cbar=cax,cbar=kws={'orientation':'horizontal'})
plt.子批次_调整(顶部=0.8)#留出空间,使色条适合图形
plt.show()

我可能应该更新我看到的内容,但在我实际的热图中,标题现在已附加到颜色栏上,颜色栏似乎需要旋转90度并以另一种方式展开。这些是简单的解决方法吗?我猜标题与错误的轴关联,尽管我正在执行plt.title。您需要
ax.set\u title
来设置标题。您使用的是最新的seaborn版本0.11.1吗?我的示例代码在您的环境中工作吗?就是这样。当然有。谢谢