我想在我的matplotlib图例中使用字体家族“Consolas”,以使等宽字体受益。我还想要一个图例标题。
但似乎当我更改我的图例的字体系列时,它会擦除图例标题。
下面是一个代码来查看问题:
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots()
plt.plot(np.linspace(0, 10), np.linspace(0, 1), label='First plot #1')
plt.plot(np.linspace(0, 10), np.linspace(0, 2), label='Second plot #2')
plt.legend(loc='best', title="My Awesome Legend Title")
# I would like to use a Monospaced font so I have found this snippet to do so
plt.setp(ax.legend().texts, family='Consolas')
# But as you can see, my legend title just disapeared !!!
# how can I do ?
# Can I force again the legend title ?
ax.legend(title="My NEW Awesome Legend Title")
# Yes ! But it changes the font family again to default.
你有什么解决办法吗?谢谢你的帮助和宝贵的时间。
2条答案
按热度按时间zpjtge221#
有几点:
ax.legend()
后立即消失,因此这种消失实际上不是由于设置字体引起的。这只是创建了一个没有标题的新图例。这对我很有效:
(
Consolas
不是我系统上可用的字体之一。i2byvkas2#
虽然@Warren Weckesser的答案有效,但我想我应该指出,这可以直接在
ax.legend()
中通过prop
和title_fontproperties
关键字实现:旁注:如果你只使用等宽字体来对齐“#1”和“#2”,那么你可以使用latex来实现这一点,而不需要使用不同的字体系列: