在Matplotlib非ASCII字符在Matplotlib非ASCII字符(Non-ASCII c

2019-05-17 12:51发布

我有显示非问题ASCII在Matplotlib字符,这些字符呈现为小盒子,而不是一个正确的字体,它看起来像(我填写这些框用红色油漆hightlight它们):

我如何解决它?

一个相关的问题是在Matplotlib重音字符

Answer 1:

这个问题实际上可能有几个不同的原因:

默认字体不包含这些字形

您可以使用以下更改默认字体(任何绘制完成之前!)

matplotlib.rc('font', family='Arial')

在matplotlib的某些版本中,你必须设置家庭:

matplotlib.rc('font', **{'sans-serif' : 'Arial',
                         'family' : 'sans-serif'})

(请注意,由于sans-serif包含内部连字符**{}语法,它实际上是必要的。)

第一个命令改变sans-serif字体家族只包含一种字体(在我的情况下,它是宋体 ),第二组的默认字体家族sans-serif

其他选项都包含在文档中 。

你已经创建了不当/传递的字符串对象为Matplotlib

即使字体包含正确的字形,如果你忘了使用u创建的Unicode常量,Matplotlib都会有这样的行为:

plt.xlabel("Średnia odległość między stacjami wsparcia a modelowaną [km]")

所以,你需要添加u

plt.xlabel(u"Średnia odległość między stacjami wsparcia a modelowaną [km]")

另一个原因是,你忘了把一个UTF-8魔法注释上的文件的顶部(我看,这可能是问题的根源 ):

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


Answer 2:

jb. 的回答是不够好。 如果你想避免增加u ,使用此

from __future__ import unicode_literals


文章来源: Non-ASCII characters in Matplotlib