matplotlib 在pandas plot legend中显示非asshole(日语)字符

8i9zcol2  于 2023-10-24  发布在  其他
关注(0)|答案(2)|浏览(149)

如果我这样做:

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

测试结果:

所以é出现了,但没有日本。在谷歌上搜索了一下之后,我发现这个page似乎为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。欢迎任何帮助。

yftpprvb

yftpprvb1#

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()
e7arh2l6

e7arh2l62#

安装并导入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="ひらがな")

输出:

相关问题