Python Plot,只删除Legend中的Label

时间:2016-01-14 03:48:39

标签: python matplotlib plot

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

示例(我只是复制粘贴其他stackoverflow问题的情节)Plot example

enter image description here

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

这样我才能看到"首先" ,"秒" ,"第三"没有蓝色,绿色,红色标签。

我的问题是,我只想在Legend(浮动)中使用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))

2 个答案:

答案 0 :(得分:1)

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

如果要保留标签(文本),可以通过创建如下的空矩形替换默认键作为空白键。 (为图例创建代理艺术家)

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()

答案 1 :(得分:0)

如果要从现有地块中删除一个标签,可以尝试以下操作:

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')