【问题标题】:Python Plot, delete just the Label from the LegendPython Plot,仅从图例中删除标签
【发布时间】:2016-04-19 07:06:18
【问题描述】:

我只想从图例中删除标签:

示例(我只是复制粘贴了另一个 stackoverflow 问题的图)Plot example

问题是,有没有办法删除图例中的颜色标签?

所以我只会看到没有蓝色、绿色、红色标签的 "first" 、 "second" 、 "third" 。

我的问题是,我只想在图例 (float) 中使用 1 个值,我不想有标签。 值应该在此示例中的绘图之外。 我将 Legend 与此代码一起使用:

PC= np.pearsonr(x,y)
plt.scatter(x,y,color="#3F5D7D",label='PK:  %.3f'%(PC[0]))
plt.legend(prop={'size':12},bbox_to_anchor=(1.1, 1.1))

【问题讨论】:

    标签: python matplotlib plot


    【解决方案1】:

    如果您想从现有绘图中删除一个标签,您可以试试这个:

    label_to_remove='remove_me'
    h,l=ax.get_legend_handles_labels()
    
    idx_keep=[k[0] for k in enumerate(l) if l[k[0]] != label_to_remove]
    
    handles=[]
    labels=[]
    
    for i in idx_keep:
        handles.append(h[i])
        labels.append(l[i])
    print(handles, labels)
    ax.legend(handles, labels, loc='upper right')
    

    【讨论】:

      【解决方案2】:

      您的标题似乎有点误导,因为它声明您要从图例中删除标签(文本部分),但是您的问题文本表明您只想看到没有红色的文本,绿色和蓝色(Legend Key)。

      如果您想保留标签(文本),您可以通过创建如下所示的空矩形将默认键替换为空白键。 (为传奇创建代理艺术家)

      import matplotlib.pyplot as plt
      import matplotlib
      import random
      import scipy.stats as ss
      
      pop = range(100)
      x = random.sample(pop, 10)
      y = random.sample(pop, 10)
      PC = ss.pearsonr(x, y)
      plt.scatter(x,y,color="#3F5D7D")
      blank = matplotlib.patches.Rectangle((0,0), 0, 0, fill=False, edgecolor='none', visible=False)
      plt.legend([blank], ['PK:  %.3f'%(PC[0])], prop={'size':12},bbox_to_anchor=(1.1, 1.1))
      plt.show()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-23
        • 1970-01-01
        • 2020-12-26
        • 2023-02-07
        • 1970-01-01
        • 2017-09-22
        • 2015-07-15
        • 2017-09-11
        相关资源
        最近更新 更多