1. 程式人生 > >解決Matplotlib繪製的圖表不能正確顯示中文

解決Matplotlib繪製的圖表不能正確顯示中文

    解決這個問題有兩種方法,一種方法是修改配置檔案,這種方法一勞永逸,以後不必擔心中文顯示的問題(重新安裝Matplotlib除外),另一種方法是通過程式碼修改,比較侷限,但步驟少點。
    先說一下前一種方法,也就是修改配置檔案。(僅限於Ubuntu。)在我的系統中,這個檔案的路徑為/usr/local/lib/python3.4/dist-packages/matplotlib/mpl-data/matplotlibrc,或者你也可以用sudo find / -name matplotlibrc自己搜尋出來。
1. 開啟這個檔案,先找到font.family,去掉這行開頭的“#”
2. 再找到font.sans-serif

,同樣去掉“#”,並且在“:”之後新增系統中存在的中文字型。這裡說一下怎麼找系統中的中文字型,輸入命令fc-list :lang=zh-cn,就可以看到系統中的中文字型了,我這裡選用的字型是“FZHei-B01”(有這個字型,可能是我裝了WPS的緣故),大家對照這個形式,就知道其他中文字型的名字了。
3. 新增完字型名字,再找到axes.unicode_minus,去掉“#”,並把“True”改成“False”,這樣就可以正常顯示負號
    接下來說一下後面那種編碼解決的方法。首先你還是要找中文字型,不過這次你要找中文字型檔案,也就是“.ttf”,在我這裡路徑為“/usr/share/fonts”。找到路徑檔案,接下來就是寫程式碼:

from matplotlib.font_manager import FontProperties
font = FontProperties(fname="/usr/share/fonts/wps-office/FZWBK.TTF", size=15)
# 省略若干程式碼
ax.set_ylabel('分數', fontproperties=font)
plt.legend(prop=font)

前面找到的中文字型檔案路徑作為上面函式的引數,用於生成中文字型物件。