我想在matplotlib图中的同一个图例中使用2种不同的字体大小。
例如,我想对某些标签使用15磅粗体字,对同一图例框中的其他标签使用10磅普通字体。
我的情节图例已经从2个轴(Single legend for multiple axes)重新组合了图例并且绘制了可变数量的数据。
我已经使用空白数据策略向图例图(Is it possible to add a string as a legend item in matplotlib)添加注释。但是如果可能的话,我想用更大尺寸的螺栓来制造它。
谢谢!
答案 0 :(得分:1)
您可以在图例()中包含的Text
对象上使用以下模式:
leg = plt.legend()
for i, text in enumerate(leg.get_texts()):
# pretend the element to be changed is in index position 3
if i == 3:
text.set_weight("bold")
text.set_size("x-large")
# or equivalently with one call to setp()
plt.setp(text, weight="bold", size="x-large")
编辑:
看起来在图例中的一个文本对象中更改内容实际上适用于所有对象。一种有效的解决方法是像text.set_text(r'$\mathbf{label}$')
一样使用mathtext。在循环中,我们需要检索标签并处理mathtext“压缩”空格。这是一个例子:
line1, = plt.plot([3,2,1], marker='o', label='Line 1 label is long and has spaces')
line2, = plt.plot([1,2,3], marker='o', label='Line 2')
leg = plt.legend()
for i, text in enumerate(leg.get_texts()):
# the element to be changed is in index position 0
if i == 0:
t = text.get_text()
new_label = "".join([i + r"\/" for i in t.split()])
text.set_text(r'$\mathbf{}$'.format("{" + new_label + "}"))
我不知道您是否接受使用mathtext或latex,但它似乎允许单个图例文本标签的唯一格式。