1. 程式人生 > >Matplotlib輸出中文顯示問題

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