在matplotlib标签,标题中写希腊语

时间:2014-07-24 10:38:56

标签: python unicode matplotlib

我正在尝试用希腊文写一些文字标签,图标题等,以配合我的情节,但到目前为止无济于事。

我不想打印特定字母(我知道如何使用特殊字符表示法),我宁愿用希腊文写出整个文本(可能使用Unicode和u'text' ?)。

在收到建议之前,我想提一下,由于某种原因,我无法让matplotlib与TeX合作(在Ubuntu 14.10中使用来自anaconda的Ipython笔记本),所以这不是一个真正的选择。

我尝试加载Arial字体并且确实加载成功但是我再次得到方块而不是字符。我用了

import matplotlib.font_manager as fm
prop = fm.FontProperties(fname='/usr/share/fonts/truetype/msttcorefonts/Arial.ttf') 

然后显示我使用的字符串u'Αποτελέσματα προσομοίωσης'。 Arial应该完美呈现希腊语,我在文本编辑器中多次使用它。

1 个答案:

答案 0 :(得分:1)

我设法通过执行以下操作来解决问题:

首先,您必须导入必要的库并设置计算机上安装的字体,该字体可以确保呈现希腊语,如Ubuntu字体(以下代码中的Ubuntu Bold)。

import matplotlib.font_manager as fm
fp1 = fm.FontProperties(fname='/usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-B.ttf')

然后您可以将所选字体专门应用于每个标签,标题等,如下所示:

plt.title(u"Τίτλος του γραφήματος",fontproperties=fp1)

如果这似乎不起作用,请尝试在文件开头添加以下行:

# -*- coding: utf-8 -*-

提供样本图以证明代码的正确性:

import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
import numpy as np

fp1 = fm.FontProperties(fname='/usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-B.ttf')

data = np.random.randn(5000) #generate some random data
plt.plot(data)
plt.title(u"Τίτλος του γραφήματος", fontproperties=fp1)
plt.xlabel(u"Άξονας x", fontproperties=fp1)
plt.ylabel(u"Άξονας y", fontproperties=fp1)
plt.show()

应该给你这样的东西:

Example Graph