在Matplotlib中通过TeX使用符号字体呈现希腊符号
为了在Python的matplotlib包中给我的图形添加希腊字母,我使用了以下代码:
import matplotlib
matplotlib.use('PDF')
import matplotlib.pyplot as plt
from matplotlib import rc
rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})
plt.rcParams['ps.useafm'] = True
rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})
plt.rcParams['pdf.fonttype'] = 42
# plot figure
# ...
# annotate figure
plt.xlabel(r'$\mu$ = 50')
plt.ylabel(r'$\sigma$ = 1.5')
这样做会让等号和它右边的内容使用Helvetica字体,正是我想要的,而希腊字母则默认使用通常的TeX字体(我认为是Times New Roman)。
我想知道怎么才能把希腊字母的字体改成“Symbol”字体?对我来说,重要的是不要让它显示成TeX的默认Times字体。
谢谢你的帮助。
1 个回答
15
你问这个问题真有意思;我不久前也在为类似的问题烦恼。考虑到在TeX中处理字体是多么复杂,我建议你干脆不使用TeX。
不过,任何好的Helvetica字体都自带希腊字母,所以你不需要使用Symbol字体。只需在你的字符串中放入一些Unicode代码点,像这样:
plt.xlabel(u'\u03bc = 50')
plt.ylabel(u'\u03c3 = 1.5')
如果你想查找这些代码点,可以使用这个Unicode代码点查找工具,非常方便。
我不太确定matplotlib是否能处理Unicode字符串。如果上面的方式不行,可以尝试用matplotlib能接受的某种编码。
(如果你真的坚持要使用Symbol字体:我觉得你不能在同一个标签中使用多种字体,所以你需要添加多个标签,并写一些代码来对齐它们。虽然这样不太好看,但也是可以做到的。)