【问题标题】:How to adjust height of individual sublots in seaborn heatmap如何调整seaborn热图中各个子图的高度
【发布时间】:2020-11-03 07:46:42
【问题描述】:

我有一个使用 seaborn 的热图,我正在尝试调整下面第四个图的高度。您会看到它只有 2 行数据,而其他数据行更多:

我使用以下代码来创建情节:

f, ax = plt.subplots(nrows=4,figsize=(20,10))
cmap = plt.cm.GnBu_r
sns.heatmap(df,cbar=False,cmap=cmap,ax=ax[0])
sns.heatmap(df2,cbar=False,cmap=cmap,ax=ax[1])
sns.heatmap(df3,cbar=False,cmap=cmap,ax=ax[2])
sns.heatmap(df4,cbar=False,cmap=cmap,ax=ax[3])

有谁知道下一步基本上使第 4 个地块的高度更小,从而伸展其他 3 个地块?第 4 个地块通常总是有 2-3 个,而其他地块通常有 6-7 个。非常感谢!

【问题讨论】:

    标签: python pandas matplotlib seaborn


    【解决方案1】:

    像往常一样,matplotlib 非常时髦/乏味。但是就在这里!

    f = plt.figure(constrained_layout = True)  
    specs = f.add_gridspec(ncols = 1, nrows = 4, height_ratios = [1,1,1,.5])
    
    for spec, df in zip(specs, (df, df2, df3, df4)):
      ax = sns.heatmap(df,cbar=False,cmap=cmap, ax=f.add_subplot(spec)) 
    

    您可以使用 height_ratio 更改相对于彼此的高度。如果您想更改相对宽度,还可以实现 wdith_ratios 参数。您还可以实现一个 for 循环来遍历图形。

    【讨论】:

    • 谢谢!我用这个代替我的代码吗?那么spec[0] 是否应该移动到spec[1] 以获取ax2
    • 你拍你是对的!我刚刚编辑了规范[]。你可以改用这个。除了将 ax 分配给特定的 height_ratio 之外,它实际上是相同的。我希望得到支持和接受!
    猜你喜欢
    • 2011-03-20
    • 1970-01-01
    • 2016-02-18
    • 2017-07-04
    • 2017-05-30
    • 2015-04-06
    • 1970-01-01
    • 2020-12-16
    • 1970-01-01
    相关资源
    最近更新 更多