Matplotlib輸出中文顯示問題
宣告:這是對別人經驗的總結
問題描述
matplotlib繪製圖像的時候顯示中文時候,中文會變成小方格子。其實罵他plotlib是支援中文編碼的,造成這個現象的原因是,matplotlib庫的配置資訊裡面沒有中文字型的相關資訊。根據這個思路我們能想到的解決辦法就是,修改配置檔案。但是不推薦這樣。
解決辦法
方法一:修改配置檔案matplotlibrc
在matplotlib的安裝路徑:Python36\site-packages\matplotlib\mpl-data\matplotlibrc,檔案中有如下內容:
#font.family : sans-serif #font.sans-serif : Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Anal, Helvetica, Avant Ga
方法二:動態設定引數(推薦方式)
在python指令碼中動態設定matplotlibrc,這樣就避免了更改配置檔案的麻煩,方便靈活,例如:
from pylab import mpl
mpl.rcParams[‘font.sans-serif] = [‘SimHei’]
由於更改了字型導致顯示不出負號,將配署檔案中axes.unicode minus : True修改為Falsest就可以了,當然這而可以用程式碼來完成。
from pylab import mpl mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定預設字型 mpl.rcParams['axes.unicode_minus'] = False # 解決儲存影象是負號'-'顯示為方塊的問題
方法三:使用字型管理器
python有個字型管理器,font_manager
myfont = matplotlib.font_manager.FontProperties(fname='C:/Windows/Fonts/msyh.ttf')
mpl.rcParams['axes.unicode_minus'] = False
黑體 | SimHei |
微軟雅黑 | Microsoft YaHei |
微軟正黑體 | Microsoft JhengHei |
新宋體 | NSimSun |
新細明體 | PMingLiU |
細明體 | MingLiU |
標楷體 | DFKai-SB |
仿宋 | FangSong |
楷體 | KaiTi |
仿宋_GB2312 | FangSong_GB2312 |
楷體_GB2312 | KaiTi_GB2312 |
宋體:SimSuncss中中文字型(font-family)的英文名稱
Mac OS的一些:
華文細黑:STHeiti Light [STXihei]
華文黑體:STHeiti
華文楷體:STKaiti
華文宋體:STSong
華文仿宋:STFangsong
儷黑 Pro:LiHei Pro Medium
儷宋 Pro:LiSong Pro Light
標楷體:BiauKai
蘋果儷中黑:Apple LiGothic Medium
蘋果儷細宋:Apple LiSung Light
Windows的一些:
新細明體:PMingLiU
細明體:MingLiU
標楷體:DFKai-SB
黑體:SimHei
新宋體:NSimSun
仿宋:FangSong
楷體:KaiTi
仿宋_GB2312:FangSong_GB2312
楷體_GB2312:KaiTi_GB2312
微軟正黑體:Microsoft JhengHei
微軟雅黑體:Microsoft YaHei
裝Office會生出來的一些:
隸書:LiSu
幼圓:YouYuan
華文細黑:STXihei
華文楷體:STKaiti
華文宋體:STSong
華文中宋:STZhongsong
華文仿宋:STFangsong
方正舒體:FZShuTi
方正姚體:FZYaoti
華文彩雲:STCaiyun
華文琥珀:STHupo
華文隸書:STLiti
華文行楷:STXingkai
華文新魏:STXinwei