Unicode 字符渲染 [英] Unicode character render
本文介绍了Unicode 字符渲染的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我找不到在 matlibplot 图表中呈现 unicode 字符的方法:
I can't find a way to render the unicode characters in the matlibplot chart:
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
from numpy.random import normal
from itertools import count
import matplotlib
a = {u'\u043f\u0430\u0440\u0435\u0430\u0442\u0430': 0.018144370928201092, u'\u0440\u0435\u043b\u0430\u0442\u0438\u0432\u0438\u0442\u0438\u0441\u0442\u0438\u0447\u043a\u0430\u0442\u0430': 0.008406336989671147, u'\u043d\u0430\u043e\u0453\u0430': 0.0704839024518581, u'\u0444\u0438\u0437\u0438\u043a\u0430': 0.025219010969013446, u'\u043a\u043e\u0438': 0.0039908251856718025, u'\u0438\u0437\u0431\u0443\u0432\u043d\u0430\u043b\u0430': 0.0035792606713834184, u'\u043c\u0435\u0445\u0430\u043d\u0438\u043a\u0430\u0442\u0430': 0.008406336989671147, u'\u043c\u0438\u043a\u0440\u043e\u0434\u0438\u043c\u0435\u043d\u0437\u0438\u0438': 0.008406336989671147, u'\u0434\u0430\u0432\u0430': 0.016812673979342295, u'\u0441\u0442\u0440\u0430\u043d\u0430': 0.008406336989671147}
plt.bar(*zip(*zip(count(), a.values())))
plt.title("Some chart")
plt.xticks(*zip(*zip(count(0.4), (a.keys()))))
plt.xlabel("Value")
plt.ylabel("Frequency")
plt.show()
推荐答案
使用西里尔字母指定字体.例如,
Specify a font with Cyrillic characters. For example,
import matplotlib as mpl
mpl.rcParams['font.family'] = 'Arial'
您的默认字体可能是'Helvetica'
,它没有所需字符的字形.
Your default font might be 'Helvetica'
, which does not have glyphs for the required characters.
import matplotlib.pyplot as plt
from numpy.random import normal
from itertools import count
import matplotlib as mpl
mpl.rcParams['font.family'] = 'Arial'
a = {u'\u043f\u0430\u0440\u0435\u0430\u0442\u0430': 0.018144370928201092, u'\u0440\u0435\u043b\u0430\u0442\u0438\u0432\u0438\u0442\u0438\u0441\u0442\u0438\u0447\u043a\u0430\u0442\u0430': 0.008406336989671147, u'\u043d\u0430\u043e\u0453\u0430': 0.0704839024518581, u'\u0444\u0438\u0437\u0438\u043a\u0430': 0.025219010969013446, u'\u043a\u043e\u0438': 0.0039908251856718025, u'\u0438\u0437\u0431\u0443\u0432\u043d\u0430\u043b\u0430': 0.0035792606713834184, u'\u043c\u0435\u0445\u0430\u043d\u0438\u043a\u0430\u0442\u0430': 0.008406336989671147, u'\u043c\u0438\u043a\u0440\u043e\u0434\u0438\u043c\u0435\u043d\u0437\u0438\u0438': 0.008406336989671147, u'\u0434\u0430\u0432\u0430': 0.016812673979342295, u'\u0441\u0442\u0440\u0430\u043d\u0430': 0.008406336989671147}
plt.bar(*zip(*zip(count(), a.values())))
plt.title("Gaussian Histogram")
plt.xticks(*zip(*zip(count(0.4), a.keys())))
plt.xlabel("Value")
plt.ylabel("Frequency")
plt.show()
如果您没有 Arial
字体,您可以使用
If you don't have the Arial
font, you can generate a list of font files known to your system with
import matplotlib.font_manager as font_manager
print(sorted(font_manager.findSystemFonts()))
然后您可以使用
prop = font_manager.FontProperties(fname=path)
mpl.rcParams['font.family'] = prop.get_name()
其中 path
是 findSystemFonts()
返回的路径之一.
where path
is one of the paths returned by findSystemFonts()
.
这篇关于Unicode 字符渲染的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文