在Matplotlib中使用Unicode希腊字母

时间:2016-07-07 02:42:44

标签: python matplotlib unicode

在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:

enter image description here

是否可以使用Matplotlib执行此操作? (我知道有可能显示Latex,但更喜欢“纯文本”选项)。

1 个答案:

答案 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)