matplotlib顯示中文

【注意】

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

import matplotlib.pyplot as plt

 

import pylab as plt

 

 

【效果圖】

 

【方式一】FontProperties

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

總的來講,很醜陋。ide

 

【方式二】 fontproperties

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

靈活,另外一個優勢:不污染全局字體設置測試

 

【方式三】rcParams

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

簡潔的用法。缺點:污染全局字體設置。(因此須要第二步驟)字體

 

 

【方式四】rc

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

靈活的用法。缺點:影響全局字體(因此須要第二步驟)編碼

 

【總結】

方式二用時才設置,且不會污染全局字體設置,更靈活spa

方式3、方式四不須要對字體路徑硬編碼,並且一次設置,屢次使用,更方便。code

 

 【測試代碼】

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

 

 

【附錄】

一些中文字體的英文名blog

宋體     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
華文新魏:STXinweiunicode

相關文章
相關標籤/搜索