matplotlib.pyplot标签中缺少抛光字符(无论使用UTF-8)

时间:2016-12-04 08:00:59

标签: python matplotlib character-encoding

我正在尝试使用matplotlib库创建直方图。

我将编码设置为UTF-8,但是缺少一些抛光字符(不是全部,只有一些)。 我试过玩encodedecode,但没有成功。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
reload(sys)  
sys.setdefaultencoding('utf8')

import matplotlib.pyplot as plt

#sampleData
data=[[ 0.13837092,  0.14755699,  0.17719047,  0.1998352 ],
       [ 0.19318216,  0.15863521,  0.17136143,  0.18979461]]

n, bins, patches = plt.hist(data, facecolor='green') 

# I've tried also adding: .encode('UTF8') and .decode('UTF8'), but without success
plt.xlabel("Wartości ą, ć, ę, ł, ń, ó, ś, ź, ż.")
plt.ylabel("Prawdopodobieństwo ą, ć, ę, ł, ń, ó, ś, ź, ż.")
plt.title("Tytuł ą, ć, ę, ł, ń, ó, ś, ź, ż.")
plt.grid(True)
plt.savefig("sampleHist.png")
plt.clf()

结果: sampleHist.png - some polish chatacters are not visible

1 个答案:

答案 0 :(得分:0)

根据评论 - 是的,这是使用不同字体的问题。 工作代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import matplotlib
import matplotlib.pyplot as plt

# Set font which contains polish characters:
matplotlib.rc('font', family='Arial')


#sampleData
data=[[ 0.13837092,  0.14755699,  0.17719047,  0.1998352 ],
       [ 0.19318216,  0.15863521,  0.17136143,  0.18979461]]

n, bins, patches = plt.hist(data, facecolor='green') 

plt.xlabel(u"Wartości ą, ć, ę, ł, ń, ó, ś, ź, ż.")
plt.ylabel(u"Prawdopodobieństwo ą, ć, ę, ł, ń, ó, ś, ź, ż.")
plt.title(u"Tytuł ą, ć, ę, ł, ń, ó, ś, ź, ż.")
plt.grid(True)
plt.savefig("sampleHist.png")
plt.clf()

sampleHist.png