【问题标题】:How to change the position and size of the labels of the ticks of the vertical colorbar of a seaborn's heatmap?如何更改seaborn热图垂直颜色条刻度标签的位置和大小?
【发布时间】:2020-12-02 06:12:36
【问题描述】:

如何更改seaborn热图垂直彩条刻度标签的位置和大小?

我尝试了以下代码

ax.figure.axes[-1].yaxis.label.set_size(36)
ax.figure.axes[-1].yaxis.label.set_position((4, 1.0))

但是,这不起作用,即,颜色条刻度标签的字体大小保持在相同的位置和相同的字体大小。我也在做

colorbar = ax.collections[0].colorbar
colorbar.set_ticks([-0.667, 0, 0.667])


# I want these labels to be bigger and more to the right!!
colorbar.set_ticklabels(['-1', '0', '1']) 

使用colorbar.set_ticks([-0.667, 0, 0.667]),我可以更改刻度的垂直位置,但我也希望关联的标签离刻度本身更远。

【问题讨论】:

    标签: python matplotlib plot seaborn heatmap


    【解决方案1】:

    颜色条的刻度有点混乱,因为位置需要通过colorbar.set_ticks() 设置,但是当你想更改其他参数时,你必须回到底层轴。对于垂直颜色条,使用 y 轴。

    This post 展示了一种始终使颜色条与主图高度相同的方法。颜色条需要在sns.heatmap之外创建。

    import matplotlib.pyplot as plt
    from mpl_toolkits.axes_grid1 import make_axes_locatable
    import numpy as np
    import seaborn as sns
    
    ax = sns.heatmap(np.random.uniform(-.6, .6, (6, 12)), cmap='inferno', vmin=-0.667, vmax=0.667, square=True, cbar=False)
    divider = make_axes_locatable(ax) 
    cax = divider.append_axes("right", size="5%", pad=0.1) 
    cbar = plt.colorbar(ax.collections[0], cax=cax)
    cbar.set_ticks([-0.667, 0, 0.667])
    cbar.ax.set_yticklabels(['-1', '0', '1'], size=20)
    cbar.ax.tick_params(axis='y', which='major', length=0, pad=15)
    cbar.outline.set_edgecolor('black')
    cbar.outline.set_linewidth(2)
    plt.tight_layout()
    plt.show()
    

    【讨论】:

    • 由于某种原因,现在我只看到颜色条右侧的 1 和 0 标签,即命令 cbar.set_ticks([-0.667, 0, 0.667]) 没有按预期工作,但在它工作之前。你知道为什么会出现这种情况吗?
    • 如果热图中的最小值大于-0.667,则该值不会出现在颜色栏中。您可以通过vminvmax 参数强制颜色映射在-0.6670.667 之间:sns.heatmap(... vmin=-0.667, vmax=0.667)
    • 谢谢!这就是问题所在:我没有注意到我正在设置vminvmax。对不起,如果我惹恼了你,但是如果你设置square=True(即你强制热图平方),你有没有经历过颜色条变得比热图更高/更大?有没有办法确保颜色条始终与热图的高度相同?
    • 谢谢!这也解决了另一个问题!如果可以的话,我会为这个答案投票 3-4 次:D
    猜你喜欢
    • 2015-03-06
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 2020-05-18
    • 2023-03-25
    • 1970-01-01
    • 2019-11-12
    相关资源
    最近更新 更多