問題
在python中使用matplotlib畫圖,裏面的中文會顯示亂碼方塊。
解決方法
這是由於matplotlib默認使用的字體中不包含中文字符引起的,可以通過將中文字符加入到默認字體中解決。
前提:查找本地都有哪些中文字體
打開matplotlib字體,默認爲C:\Users\用戶名\.matplotlib
,打開fontList.json
,查找中文字體如simHei
,song
,kai
等,分別對應簡體黑、宋體、楷體等。
查找到之後,其對應的name
字段值即爲我們接下來將要設置的中文字體名,複製下來,比如中宋字體STZhongsong
:
方法一:代碼解決
在腳本開頭加入以下語句即可:
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['STZhongsong'] # 指定默認字體:解決plot不能顯示中文問題
mpl.rcParams['axes.unicode_minus'] = False # 解決保存圖像是負號'-'顯示爲方塊的問題
方法二:永久解決
運行下面的代碼:
import matplotlib
print(matplotlib.matplotlib_fname())
會輸出配置文件路徑,如:
C:\Users\gong\AppData\Local\Continuum\anaconda3\lib\site-packages\matplotlib\mpl-data\matplotlibrc
打開此文件,找到#font.family:
和#font.sans-serif:
開頭的這兩行,將兩行的註釋#
去掉,並在font.sans-serif:
後添加自己想加入的中文字體名,如:
然後保存文件,重新運行python環境即可,不必在代碼中做出任何修改。