我只想删除图例中的标签:
示例(我只是复制粘贴其他stackoverflow问题的情节)Plot example
问题是,有没有办法删除图例中的颜色标签?
这样我才能看到"首先" ,"秒" ,"第三"没有蓝色,绿色,红色标签。
我的问题是,我只想在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))
答案 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')