在Python中,当DISPLAY未定义时,使用matplotlib生成带UTF-8标签的JPG
我知道在没有显示器的情况下,如何保存一个图表:
但是,当我在图表中使用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'那一行注释掉,当有显示器时,输出文件看起来就没问题。我在Mac和CentOS上都遇到过这个问题。有没有人能教我在没有显示器的情况下,如何创建一个正确显示UTF字符的jpg文件?
提前谢谢大家!
1 个回答
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')
你可以修改 font.serif
和 font.sans-serif
这两个设置,来改变默认的字体搜索顺序,把包含你需要的字符的字体放在前面。