代码之家  ›  专栏  ›  技术社区  ›  Rebel

如何将水平matplotlib颜色条对象的标签精确地定位在颜色条的中心下方或上方?

  •  1
  • Rebel  · 技术社区  · 6 年前

    以下是我从 matplotlib示例中借用的代码,稍加修改即可生成具有正确放置标签的图像的水平颜色栏:

    从Matplotlib导入颜色 将matplotlib.pyplot导入为plt 将numpy导入为np 随机种子(19680801) CMAP =“酷” 图,axs=plt.子批次()。 #生成一个范围从一个绘图到下一个绘图的数据。 数据=(1/10)*np.随机.rand(10,20)*1e-6 image=axs.imshow(数据,cmap=cmap) axs.label_外部() #查找用于设置色阶的所有颜色的最小值和最大值。 vmin=image.get_array().min()) vmax=image.get_array().max()) norm=颜色。正常化(vmin=vmin,vmax=vmax) cbar=图颜色条(图像,ax=axs,方向=水平,分数=0.1) cbar.ax.set iLabel('$[m_609 kpc^-2]$',position=(30,1),fontsize=20,rotation=0) 显示() < /代码>

    但这是我不想要的输出。

    我想要一个正好位于 colorbar (下方或上方)中心的标签。在将上述代码中给定的坐标更改为 位置后,确定标签位置似乎没有任何灵活性。在 matplotlib colorbars的上下文中,是否有我不知道的事情?非常感谢您的帮助。 稍作修改,为带有正确放置标签的图像生成水平颜色条:

    from matplotlib import colors
    import matplotlib.pyplot as plt
    import numpy as np
    
    np.random.seed(19680801)
    cmap = "cool"
    
    fig, axs = plt.subplots()
    
    # Generate data with a range that varies from one plot to the next.
    data = (1 / 10) * np.random.rand(10, 20) * 1e-6
    image = axs.imshow(data, cmap=cmap)
    axs.label_outer()
    
    # Find the min and max of all colors for use in setting the color scale.
    vmin = image.get_array().min()
    vmax = image.get_array().max()
    norm = colors.Normalize(vmin=vmin, vmax=vmax)
    
    cbar = fig.colorbar(image, ax=axs, orientation='horizontal', fraction=.1)
    cbar.ax.set_ylabel('$[M_\u2609 kpc^{{-2}}]$', position=(30,1), fontsize=20, rotation=0)
    
    
    plt.show()
    

    但这是我不想要的输出。

    Figure1

    我想要一个标签,正好放在 colorbar (低于或高于)。更改给定的坐标后 position 在上面的代码中,确定标签位置似乎没有任何灵活性。有什么我不知道的事情吗? matplotlib 彩条吗?非常感谢你的帮助。

    1 回复  |  直到 6 年前
        1
  •  3
  •   Diziet Asahi    6 年前

    轴标签( ylabel )设计为沿相应轴放置。另一方面,根据设计,a title 位于轴对象的中心。因此,您不应使用 设置“ylabel”,而应使用 设置“title”。

    cbar.ax.set-2]$,fontsize=20)
    < /代码> 
    
    

    有关图形不同部分的详细信息,请参见This example“Anatomy of a Figure”,

    D在轴对象上居中。所以不要使用set_ylabel,您应该使用set_title.

    cbar.ax.set_title('$[M_\u2609 kpc^{{-2}}]$', fontsize=20)
    

    enter image description here

    有关图形不同部分的详细信息,请参见this example "Anatomy of a Figure"

    enter image description here