在matplotlib标签和标题中写希腊字母
我想在我的图表中写一些希腊文的文字,比如标签和图标题,但到现在为止都没成功。
我并不是想打印特定的字母(我知道怎么用特殊字符来做到这一点),我更希望能把整段文字用希腊文写出来(可能是用Unicode和u'text'
?)。
在我接受建议之前,我想先说明一下,出于某种原因,我无法让matplotlib和TeX配合使用(我是在Ubuntu 14.10的Anaconda下用Ipython notebook),所以这条路行不通。
我尝试加载Arial字体,确实加载成功了,但我看到的还是方块,而不是字母。我使用了
import matplotlib.font_manager as fm
prop = fm.FontProperties(fname='/usr/share/fonts/truetype/msttcorefonts/Arial.ttf')
然后为了显示字符串,我用了u'Αποτελέσματα προσομοίωσης'
。Arial字体应该能完美显示希腊文,我在文本编辑器中用过很多次。
1 个回答
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()
你应该能看到类似这样的结果: