【问题标题】:Python matplolib legend how to reduce distance between frame left edge and markersPython matplotlib图例如何减少框架左边缘和标记之间的距离
【发布时间】:2020-06-06 16:27:02
【问题描述】:

正如问题所暗示的,我正在尝试减少图例框架的左边缘与标记之间的距离。

图中是当前的情节。我想找到一种方法:

1) 保留frameon = True 以部分掩盖底层点;

2) 向左移动标记和标签,减少图例边缘和标记之间的距离

实际图例配置如下:

leg = ax.legend(handles=legend_elements, 
      fontsize=13, loc=(0.03, 0.01), frameon=True, 
      framealpha=0.5, handletextpad=-0.6, 
      labelspacing=0.08, borderpad=0)

编辑:解决方案 感谢两位提供最快的答案,解决方案结合了您的两个建议:

leg = ax.legend(handles=legend_elements, 
      fontsize=13, loc=(0.03, 0.01), frameon=True, 
      framealpha=0.5, handletextpad=0., 
      labelspacing=0.08, borderpad=0.,
      handlelength=1.2, borderaxespad=1)

我选择了 Sinan Kurmus 的回答来支持他的排名

【问题讨论】:

    标签: python python-3.x matplotlib legend


    【解决方案1】:

    尝试为borderpad 使用负值。这也可能导致图例向下移动,因此请使用borderaxespad 进行调整。

    类似这样的:

    leg = ax.legend( 
          fontsize=13, loc="lower left", frameon=True, 
          framealpha=1, handletextpad=-0.6, 
          labelspacing=0.08, borderpad=-0.5, borderaxespad=1)
    

    请注意,我使用"lower left" 作为图例位置,而不是绝对位置。否则整个“用borderpadborderaxspread 移动东西”会变得很奇怪(我知道这不是一个非常精确的解释:)。

    【讨论】:

      【解决方案2】:

      您可以尝试添加以下参数并根据您的选择更改值

      handlelength=1
      

      示例

      fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(9, 3))
      np.random.seed(10)
      
      # WITHOUT handlelength
      ax1.plot(np.random.randint(0, 10, 5), np.random.randint(0, 10, 5), 'bo', label='data1')
      ax1.plot(np.random.randint(0, 10, 5), np.random.randint(0, 10, 5), 'rs', label='data2')
      leg = ax1.legend(fontsize=19, loc=(0.03, 0.01), frameon=True, 
            framealpha=0.5, handletextpad=0.5, 
            labelspacing=0.08, borderpad=0.0)
      
      
      # WITH handlelength
      ax2.plot(np.random.randint(0, 10, 5), np.random.randint(0, 10, 5), 'bo', label='data1')
      ax2.plot(np.random.randint(0, 10, 5), np.random.randint(0, 10, 5), 'rs', label='data2')
      leg = ax2.legend(fontsize=19, loc=(0.03, 0.01), frameon=True, 
            framealpha=0.5, handletextpad=0.5, 
            labelspacing=0.08, borderpad=0.0, handlelength=1)
      

      【讨论】:

        猜你喜欢
        • 2018-06-19
        • 2011-05-01
        • 2015-11-02
        • 2015-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-11
        相关资源
        最近更新 更多