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)
如评论中所述,我无法使用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)
给予:
| 归档时间: |
|
| 查看次数: |
4112 次 |
| 最近记录: |