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

2 投票
1 回答
1066 浏览
提问于 2025-04-29 20:03

我知道在没有显示器的情况下,如何保存一个图表:

在没有显示器的情况下用matplotlib生成PNG

但是,当我在图表中使用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.seriffont.sans-serif 这两个设置,来改变默认的字体搜索顺序,把包含你需要的字符的字体放在前面。

撰写回答