python-3.x - Seaborn 热图更改颜色条的大小

标签 python-3.x matplotlib heatmap seaborn

使用以下代码,我绘制了一个 seaborn 热图和一个颜色条。
我想将颜色条的大小设置为等于热图的大小。
我怎样才能做到这一点?

我尝试使用 fig.colorbar(heatmap) 处理颜色条但这会返回错误:

AttributeError: 'AxesSubplot' object has no attribute 'autoscale_None'

代码:
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()

enter image description here

最佳答案

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

话虽如此,您可以使用 cbar_kws 来控制颜色条的大小。 seaborn.heatmap 中的参数.这需要是一个字典,它作为 kwargs 传递(在引擎盖下)到 matplotlibs fig.colorbar() .

一个有趣的 kwarg 是 shrink范围。这会缩小颜色条的大小:

shrink: 1.0; fraction by which to multiply the size of the colorbar



默认值应为 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()

给予:

enter image description here

关于python-3.x - Seaborn 热图更改颜色条的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48264613/

相关文章:

python - 将文本文件中的整数存储到数组

python - 使用 Python 将 Excel DATE(而非日期时间)数据插入 SQL Server

r - 在 heatmap.2 函数中更改标题字体大小?

python - 特征和权重的热图

python - 在pyspark中进行分组时,对另一列上满足额外条件的元素进行计数

Python bob 包 API - 如何格式化输入数据

python-3.x - Matplotlib:极坐标轴刻度标签位置

python - 加载文件中的错误 ylabels

python - 简单的图形不代表数据

google-maps - 基于点值而不是点密度生成热图叠加的库