在python中未定义DISPLAY时,使用带有UTF-8标签的matplotlib生成JPG

时间:2014-10-27 00:45:47

标签: python utf-8 matplotlib

我知道如何在未定义DISPLAY时保存绘图:

Generating a PNG with matplotlib when DISPLAY is undefined

但是当我在绘图中使用UTF-8字符执行此操作时,字符将被文件中的方块替换。以下是我的代码示例:

# -*- coding: utf-8 -*-
import matplotlib
matplotlib.use('Agg')
import matplotlib.pylab as plt

plt.plot(range(10))

plt.xlabel(u'وَبَوِّئْنا')

plt.savefig('test.jpg',format='jpg')

如果'Agg'行已注释掉,则在定义DISPLAY时输出文件看起来很好。在Mac和CentOS上都发生过这种情况。有人可以告诉我如何在未定义DISPLAY时正确显示UTF字符的jpg吗?

提前谢谢!

1 个答案:

答案 0 :(得分:2)

我认为您只需要指定一个可用的字体:

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

import matplotlib
matplotlib.use('Agg')
import matplotlib.pylab as plt

plt.plot(range(10))
# you might need to change this to be a font that you know works for your gylphs
# that you have installed
plt.xlabel(u'وَبَوِّئْنا', name='Arial')

plt.savefig('test.jpg',format='jpg')

enter image description here

您可以修改font.seriffont.sans-serif字段是rcparam,以更改默认字体搜索顺序,以便将字体放在首先显示字体。