1. 程式人生 > 其它 >Python實現matplotlib顯示中文的方法詳解

Python實現matplotlib顯示中文的方法詳解

文例項講述了Python實現matplotlib顯示中文的方法。分享給大家供大家參考,具體如下:

【注意】

可能與本文主題無關,不過我還是想指出來:使用matplotlib庫時,下面兩種匯入方式是等價的(我指的是等效,當然這個說法可以商榷:)

1 import matplotlib.pyplot as plt
1 import pylab as plt

【效果圖】

【方式一】FontProperties

1 2 3 4 5 6 7 8 import matplotlib.pyplot as plt from
matplotlib.font_manager import FontProperties # 步驟一 # ... font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=14) # 步驟二 plt.xlabel("x軸", fontproperties=font) # 步驟三 plt.ylabel("y軸", fontproperties=font) plt.title("標題", fontproperties=font) plt.show()

總的來說,很醜陋。

【方式二】 fontproperties

1 2 3 4 5 6 import matplotlib.pyplot as plt # ... plt.xlabel("x軸") plt.ylabel("y軸", fontproperties="SimSun") # 步驟一 (宋體) plt.title("標題", fontproperties="SimHei") # (黑體) plt.show()

靈活,另一個優點:不汙染全域性字型設定

【方式三】rcParams

1 2 3 4 5 6 7 8 import matplotlib.pyplot as plt plt.rcParams[
'font.sans-serif'] = ['SimHei'] # 步驟一(替換sans-serif字型) plt.rcParams['axes.unicode_minus'] = False # 步驟二(解決座標軸負數的負號顯示問題) #... plt.xlabel("x軸") plt.ylabel("y軸") plt.title("標題") plt.show()

簡潔的用法。缺點:汙染全域性字型設定。(所以需要第二步驟)

【方式四】rc

1 2 3 4 5 6 7 8 9 10 11 import matplotlib.pyplot as plt font = {'family' : 'SimHei', 'weight' : 'bold', 'size' : '16'} plt.rc('font', **font) # 步驟一(設定字型的更多屬性) plt.rc('axes', unicode_minus=False) # 步驟二(解決座標軸負數的負號顯示問題) #... plt.xlabel("x軸") plt.ylabel("y軸") plt.title("標題") plt.show()

靈活的用法。缺點:影響全域性字型(所以需要第二步驟)

【總結】

方式二用時才設定,且不會汙染全域性字型設定,更靈活
方式三、方式四不需要對字型路徑硬編碼,而且一次設定,多次使用,更方便。

【測試程式碼】

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 import numpy as np import matplotlib.pyplot as plt font = {'family' : 'DFKai-SB', 'weight' : 'bold', 'size' : '16'} plt.rc('font', **font) # pass in the font dict as kwargs plt.rc('axes',unicode_minus=False) x = np.linspace(0, 10, 1000) y = np.sin(x) z = np.cos(x**2) plt.figure(figsize=(8,4)) plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2) plt.plot(x,z,"b--",label="$cos(x^2)$") plt.xlabel("x軸") plt.ylabel("y軸") plt.title("標題") plt.ylim(-1.2,1.2) plt.legend() plt.show()

執行結果:

【附錄】

一些中文字型的英文名

宋體 SimSun
黑體 SimHei
微軟雅黑 Microsoft YaHei
微軟正黑體 Microsoft JhengHei
新宋體 NSimSun
新細明體 PMingLiU
細明體 MingLiU
標楷體 DFKai-SB
仿宋 FangSong
楷體 KaiTi
隸書 LiSu
幼圓 YouYuan
華文細黑 STXihei
華文楷體 STKaiti
華文宋體 STSong
華文中宋 STZhongsong
華文仿宋 STFangsong
方正舒體 FZShuTi
方正姚體 FZYaoti
華文彩雲 STCaiyun
華文琥珀 STHupo
華文隸書 STLiti
華文行楷 STXingkai
華文新魏 STXinwei