(Python 3)關於matplotlib顯示中文

前言

遇到了一個挺頭疼的問題,就是關於matplotlib繪製出來的圖怎麼顯示中文。默認情況下,比如下面這句

plt.title('2019-nCoV疫情曲線', fontsize=20)

顯示出來的標題帶有方框,識別不出中文(如圖)。找了挺久,試了幾種方法,現在終於可以了。
在這裏插入圖片描述

環境

  • ubuntu16.04
  • pycharm
  • python3
  • matplotlib

過程

很多文章都說要加上下面這句,加了之後一般沒效果。原因在於裏面的字體庫沒有所提到的SimHei字體。

#解決中文顯示問題
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False

解決方法自然是先要找出matplotlib的字體放在哪,然後去下相應的字體,再把字體放進去。以下操作是在pycharm 中進行的。

  • 進到python console(pycharm 底下有,不然找個終端輸入python進入),輸入以下代碼即可查看字體路徑,比如我的是
    /home/xxx/PycharmProjects/Wuhan/venv/lib/python3.5/site-packages/matplotlib/mpl-data/matplotlibrc
import matplotlib    
print(matplotlib.matplotlib_fname())
  • 之後去下載SimHei字體
    字體鏈接

  • 下載完成之後將其放到/home/xxx/PycharmProjects/Wuhan/venv/lib/python3.5/site-packages/matplotlib/mpl-data/fonts/ttf下面

在這裏插入圖片描述

這個時候可以做個測試,發現依然是顯示不了漢字。

  • 之後在home目錄下,執行 ctrl + h ,打開隱藏目錄, 刪除 ~/.cache/matplotlib的緩衝目錄
sudo rm -r ~/.cache/matplotlib
  • 接下來要修改matplotlibrc文件,文件位置如圖

在這裏插入圖片描述

雙擊打開文件,ctrl+f 搜索相應的關鍵字快速定位。需要修改的部分如下(注意保存):

在這裏插入圖片描述
在這裏插入圖片描述
圖中代碼:

    font.family         : sans-serif        
    font.sans-serif     : SimHei, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif 
    axes.unicode_minus,將True改爲False,作用就是解決負號'-'顯示爲方塊的問題   

改完之後也就不需要.py文件裏的這兩行代碼了,可以註釋掉或者刪掉

# plt.rcParams['font.sans-serif']=['SimHei']
# plt.rcParams['axes.unicode_minus'] = False
  • 效果

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章