joe*_*joe 4 python fonts matplotlib pandas chinese-locale
在这里,我有一个与熊猫有关的情节工作,就像这样:
most_active_posts.plot(x = 'title',y = 'active_span',kind = 'barh')
Run Code Online (Sandbox Code Playgroud)
most_active_posts是具有索引的数据帧的对象,我想要一个具有两列的简单二维图,一个是'title',另一个是'active_span'。
title是字符串类型,包含汉字,而active_span类型是integer。
如何正常显示汉字?
我找到了一个专门用于修复 pip 中中文显示的 python 库。您可以使用终端中的命令下载它:
pip install pyplotz
Run Code Online (Sandbox Code Playgroud)
您可以编写以下代码(完整代码):
from pyplotz.pyplotz import PyplotZ
pltz = PyplotZ()
pltz.enable_chinese()
most_active_posts.plot(x='title',y='active_span',kind='bar')
pltz.xticks(np.arange(len(df.cn)),df.cn,rotation=360)
pltz.legend()
pltz.show()
Run Code Online (Sandbox Code Playgroud)
并且它可以帮你处理matplotlib中文字体!这是 github 页面:
https://github.com/201528015329004/pyplotz
还有一些方便的例子:
https://github.com/201528015329004/pyplotz/blob/master/examples/quick_start.ipynb
我的解决方法是这样的:
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
font = fm.FontProperties(fname='c:\\windows\\fonts\\simsun.ttc') # speicify font
ax = most_active_posts.plot(x = 'title',y = 'active_span',kind = 'barh')
ax.set_xticklabels(most_active_posts['title'].str.decode('utf-8'), fontproperties=font)
plt.show()
Run Code Online (Sandbox Code Playgroud)
基本上,您需要为中文字符指定有效字体。