在MATLAB中,如果键入" \ alpha"在轴标签中,它将呈现一个纯文本'希腊字符alpha,无需Latex。我希望对Matplotlib的Pyplot做同样的事情。
关注How to use unicode symbols in matplotlib?后,我尝试了以下内容:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
if __name__ == "__main__":
plt.figure()
prop = FontProperties()
prop.set_file('STIXGeneral.ttf')
plt.xlabel(u"\u2736", fontproperties=prop)
plt.show()
x = np.linspace(-1,1,21)
plt.figure()
plt.plot(x,x)
plt.xlabel(u"\u03b1") # Attempt at creating an axis label with a Unicode alpha
# plt.xlabel(r'$\alpha$') # I'm aware that Latex is possible
plt.show()
但是,我收到一条错误消息,结尾为
IOError: [Errno 2] No such file or directory: 'STIXGeneral.ttf'
如果我省略第3-10行,我不会收到错误消息但是该图显示的是正方形而不是希腊字母alpha:
是否可以使用Matplotlib执行此操作? (我知道有可能显示Latex,但更喜欢“纯文本”选项)。
答案 0 :(得分:3)
一般来说,我认为这是因为您在Windows
中运行它,我是对的吗?
在Windows
中,您需要指定字体目录的确切位置,而不仅仅是文件名。
这是我在installation of the font之后所做的事情。我转到control panel-> font
找到字体的确切位置,在我的情况下为'C:\Windows\Fonts\STIXMath-Regular.otf'
。然后我只需将代码更改为
if __name__ == "__main__":
plt.figure()
prop = FontProperties(fname='C:\Windows\Fonts\STIXMath-Regular.otf')
# prop.set_file('STIXMath-Regular.otf')
plt.xlabel(u"\u2736", fontproperties=prop)