Matplotlib 餅狀圖中的文字中文亂碼問題

今天用matplotlib畫餅狀圖時候遇到中文亂碼,通常遇到中文亂碼有兩種通用的解決方法,一種是修改matplotlibrc,經過修改matplotlibrc中的font.sans-serif添加中文,一種是直接在代碼中經過rcParams修改字體,既然遇到亂碼固然先用傳統方法試試,代碼以下:python



能夠看到雖然title的中文問題解決了,可是餅狀圖的中文依然顯示亂碼,下面試試修改matplotlibrc文件面試

遇到中文能夠看出亂碼問題,而後嘗試了修改matplotlibrc文件,可是問題卻依然沒獲得解決:app

Lib\site-packages\matplotlib\mpl-data目錄,打開matplotlibrc文件,刪除font.familyfont.sans-serif兩行前的#,並在font.sans-serif後添加微軟雅黑字體(Microsoft YaHei),可是發現原來仍是不行,到底是什麼問題呢?函數

______________________________________________________字體


後來發現ax.pie()函數返回值裏面有text實例以下圖:spa

ax.pie(np.array(game_app["download_times"])[:5],labels=game_app["name"][:5],autopct='%1.1f%%')
×
Out[73]:
([<matplotlib.patches.Wedge at 0xd1b7450>,
  <matplotlib.patches.Wedge at 0xd4686f0>,
  <matplotlib.patches.Wedge at 0xd5757b0>,
  <matplotlib.patches.Wedge at 0xd58b4f0>,
  <matplotlib.patches.Wedge at 0xd58b950>],
 [<matplotlib.text.Text at 0xd531710>,
  <matplotlib.text.Text at 0xd575250>,
  <matplotlib.text.Text at 0xd575b90>,
  <matplotlib.text.Text at 0xd58b3d0>,
  <matplotlib.text.Text at 0xd58bd30>],
 [<matplotlib.text.Text at 0xd4689d0>,
  <matplotlib.text.Text at 0xd575450>,
  <matplotlib.text.Text at 0xd575f70>,
  <matplotlib.text.Text at 0xd58b690>,
  <matplotlib.text.Text at 0xd58bfb0>])

查看了一下text實例的fontname名稱,居然不是Microsoft YaHei仍是Bitstream Vera Sans,原來問題在這,圖形中的text實例並無受到影響:3d

a = ax.pie(np.array(game_app["download_times"])[:5],labels=game_app["name"][:5],autopct='%1.1f%%')
a[1][1].get_fontname()
Out[46]:
'Bitstream Vera Sans'

那麼只能直接改text實例了,code

pie = ax.pie(np.array(game_app["download_times"])[:5],labels=game_app["name"][:5],autopct='%1.1f%%')
#圖形中的文字沒法經過rcParams設置
for font in pie[1]:
    font.set_fontproperties(mpl.font_manager.FontProperties(
            fname='L:/Python27/Lib/site-packages/matplotlib/mpl-data/fonts/ttf/simfang.ttf'))

修改後餅狀圖圖形中的中文亂碼能夠解決了:get

相關文章
相關標籤/搜索