Seaborn热图更改颜色条的大小

2Ob*_*Obe 3 matplotlib heatmap python-3.x seaborn

通过以下代码,我绘制了一个seaborn热图以及一个colorbar。我想将颜色条的大小设置为等于热图的大小。我该如何实现?

我尝试使用来解决颜色栏问题,fig.colorbar(heatmap)但这会返回错误:

AttributeError: 'AxesSubplot' object has no attribute 'autoscale_None'
Run Code Online (Sandbox Code Playgroud)

码:

fig,ax=plt.subplots(figsize=(30,60))

cmap = plt.get_cmap('inferno',30)
cmap.set_under('white')#Colour values less than vmin in white
cmap.set_over('yellow')# colour valued larger than vmax in red 

Crosstab=50000*np.random.randn(10,10)

heatmap=sns.heatmap(Crosstab[::-1],cmap=cmap,annot=False,square=True,ax=ax,vmin=1,vmax=50000,linewidths=0.8,linecolor="grey")



plt.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

Dav*_*idG 6

如评论中所述,我无法使用Seaborn版本0.8和matplotlib 2.1.1重现此问题,因此,如果可能的话,我建议您更新模块。

话虽如此,您可以使用中的cbar_kws参数来操纵颜色条的大小seaborn.heatmap。这需要是一本字典,作为kwargs传递给matplotlibs(在幕后)fig.colorbar()

感兴趣的shrink参数之一。这会缩小颜色条的大小:

收缩:1.0; 小数乘以颜色条的大小

默认值为1.0,因此您可以尝试将其手动设置为1。但是,如果此方法不起作用,则可以使用较低的值来进一步缩小颜色条。这可能需要进行一些修补才能使颜色栏的尺寸正确。

fig, ax = plt.subplots()

cmap = plt.get_cmap('inferno',30)
cmap.set_under('white')#Colour values less than vmin in white
cmap.set_over('yellow')# colour valued larger than vmax in red

Crosstab=50000*np.random.randn(10,10)

heatmap=sns.heatmap(Crosstab[::-1],cmap=cmap,annot=False,square=True,ax=ax,vmin=1,vmax=50000,
                    cbar_kws={"shrink": 0.5},linewidths=0.8,linecolor="grey")

plt.show()
Run Code Online (Sandbox Code Playgroud)

给予:

在此处输入图片说明