如何在标签上绘制带有汉字的图形

Dac*_*hao 1 python matplotlib python-3.x pandas

当我在Python 3中绘制带有汉字标签的图形时,它无法正常工作:

屏幕截图]

我的代码:

fig = pd.DataFrame({
    '?????':bond,
    '????????':bondFunds,
    '??????????':indexFunds,
    '????':ret})
fig.plot()
plt.legend(loc=0)
plt.title('?????',
          fontproperties='SimHei',
          fontsize='xx-large')
plt.grid(True)
plt.axis('tight')
Run Code Online (Sandbox Code Playgroud)

小智 6

尝试这个:

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # Or any other Chinese characters
Run Code Online (Sandbox Code Playgroud)


Kar*_*tik 5

您需要legend使用propkwag 将字体属性显式传递给函数:

from matplotlib import font_manager

fontP = font_manager.FontProperties()
fontP.set_family('SimHei')
fontP.set_size(14)

fig = pd.DataFrame({
    '?????':bond,
    '????????':bondFunds,
    '??????????':indexFunds,
    '????':ret})
fig.plot()

# Note the next lines
plt.legend(loc=0, prop=fontP)
plt.title('?????', fontproperties=fontP)

plt.grid(True)
plt.axis('tight')
Run Code Online (Sandbox Code Playgroud)

资源


小智 5

扩展Raphael的答案,对于那些使用macOS的人来说,系统中文字体是黑体。要检查您是否拥有它:

import matplotlib
print([f for f in matplotlib.font_manager.fontManager.ttflist if 'Heiti' in f.name])
Run Code Online (Sandbox Code Playgroud)

然后,执行以下操作:

matplotlib.rcParams['font.family'] = ['Heiti TC']
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅此处的链接