如何在熊猫情节中显示中文?

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。

如何正常显示汉字?

Ray*_*Ray 6

我找到了一个专门用于修复 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


zax*_*liu 5

我的解决方法是这样的:

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)

基本上,您需要为中文字符指定有效字体。