在pandas图例中显示非ASCII(日本)字符

5 投票
2 回答
4742 浏览
提问于 2025-04-18 03:35

如果我这样做:

import pandas as pd
pd.DataFrame( data=nr.random( (2,2) ), columns=[u'é',u'日本'] ).plot()

结果:

这里输入图片描述

所以 é 显示出来了,但 日本 没有。经过一番谷歌搜索,我找到了一页 网页,似乎提供了 matplotlib 的解决方案。我在 这里 下载了字体文件,并让它在 matplotlib 中工作:

import matplotlib.font_manager as fm
prop = fm.FontProperties(fname='/Users/user/Downloads/IPAfont00303/ipag.ttf')
plt.plot( np.arange(10), np.arange(10), label=u'日本' )
plt.legend( prop=prop )

结果:

这里输入图片描述

然后我尝试将同样的解决方案应用到 pandas 上:

import matplotlib.font_manager as fm
prop = fm.FontProperties(fname='/Users/user/Downloads/IPAfont00303/ipag.ttf')
df0.plot( prop=prop )

结果:

TypeError: There is no line property "prop"

我理解错误信息,但我不知道怎么让 pandas 使用 prop=prop。任何帮助都很欢迎。

2 个回答

0

安装并导入japanize_matplotlib和matplotlib后,你就可以在matplotlib中使用所有的日文字符了。

安装

pip install japanize_matplotlib

导入

import japanize_matplotlib
from matplotlib import pyplot

df = pd.DataFrame( data=np.random.random( (2,2) ), columns=['イチ', '二'] )
ax = df.plot(title="ひらがな")

输出: 在这里输入图片描述

7
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.font_manager as font_manager

df = pd.DataFrame( data=np.random.random( (2,2) ), columns=[u'é',u'日本'] )
ax = df.plot()
legend = ax.legend()
font = font_manager.FontProperties(fname='/Users/user/Downloads/IPAfont00303/ipag.ttf')

for text in legend.texts:
    text.set_font_properties(font)

plt.show()

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

撰写回答