以下代码使用plt.show()
生成正确的绘图,但在保存为pdf或png图像时失败。
我在类似的问题中尝试过各种建议(参见注释行),但这些建议都不适用于这种情况。 Png文件将unicode字符显示为框,而pdf只是忽略它们。
##-*- coding: utf-8 -*-
#from matplotlib import rc
#rc('font', **font)
#rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})
#rc('font',**{'family':'serif','serif':['Palatino']})
#rc('text', usetex=True)
import matplotlib.pyplot as plt
plt.figure()
plt.plot(range(10))
plt.xlabel(u"\u2736")
plt.ylabel(u'\u03c4')
plt.savefig('unicode.pdf')
plt.savefig('unicode.png')
#plt.show()
答案 0 :(得分:2)
当您尝试更改字体系列时,您几乎就在那里。
只有某些字体支持unicode字符。您可以通过以下方式检查已安装的字体:
import matplotlib.font_manager as fm
set([f.name for f in fm.fontManager.ttflist])
然后更改为unicode字体,例如Linux中为DejaVu Sans
,Windows为Arial Unicode MS
,Mac OS X为Lucida Grande
,more on Wiki。无需使用tex:
plt.rcParams['font.family'] = 'DejaVu Sans'