去除图例中的“破折号”,仅显示文本
我创建了一个图例,并根据需要格式化了文本,但我不知道怎么去掉那些“虚线”,这样就只显示文本了。现在的效果是这样的(注意看,右对齐的文本上面有一条线穿过):
#Add legend
leg = ax1.legend(bbox_to_anchor=(0.03, 1.05), prop={'size':8})
leg.get_frame().set_alpha(0)
legText = pylab.gca().get_legend().get_texts()
#Format legend text
legText[0].set_color('#5998ff')
legText[1].set_color('#ffbb82')
legText[2].set_color('#d689c4')
for text in legText:
text.set_ha('right')
1 个回答
5
据我所知,你不能去掉那些破折号(我想这被称为图例句柄),但你可以用一些看不见的东西来替代它。例如,一个常见的问题是把图例句柄定义为一个有颜色的矩形。
基本的思路是直接创建这个句柄,然后把所有要包含在图例中的项目作为两个列表传递。第一个列表是句柄,第二个列表是标签的文字。
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.patches import Rectangle
x = np.linspace(0, 1)
p1, = plt.plot(x, np.cos(x))
leg1 = Rectangle((0, 0), 0, 0, alpha=0.0)
plt.legend([leg1], ['label'], handlelength=0)
plt.show()
我觉得你可能需要多试试,才能得到你想要的效果。如果你不需要框架的话,我建议在调用plt.legend()
时使用frameon=False
这个参数,这样你就不用担心和框的对齐问题了。