本文實例講述了Python實現matplotlib顯示中文的方法。分享給大家供大家參考,具體如下:
【注意】
可能與本文主題無關,不過我還是想指出來:使用matplotlib庫時,下面兩種導入方式是等價的(我指的是等效,當然這個說法可以商榷:)
import matplotlib.pyplot as plt
import pylab as plt
【效果圖】

【方式一】FontProperties
import matplotlib.pyplot as pltfrom 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
import matplotlib.pyplot as plt# ...plt.xlabel("x軸")plt.ylabel("y軸", fontproperties="SimSun") # 步驟一 (宋體)plt.title("標題", fontproperties="SimHei") # (黑體)plt.show()靈活,另一個優點:不污染全局字體設置
【方式三】rcParams
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei'] # 步驟一(替換sans-serif字體)plt.rcParams['axes.unicode_minus'] = False # 步驟二(解決坐標軸負數的負號顯示問題)#...plt.xlabel("x軸")plt.ylabel("y軸")plt.title("標題")plt.show()簡潔的用法。缺點:污染全局字體設置。(所以需要第二步驟)
【方式四】rc
import matplotlib.pyplot as pltfont = {'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()靈活的用法。缺點:影響全局字體(所以需要第二步驟)
【總結】
方式二用時才設置,且不會污染全局字體設置,更靈活
方式三、方式四不需要對字體路徑硬編碼,而且一次設置,多次使用,更方便。
【測試代碼】
import numpy as npimport matplotlib.pyplot as pltfont = {'family' : 'DFKai-SB', 'weight' : 'bold', 'size' : '16'}plt.rc('font', **font) # pass in the font dict as kwargsplt.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()運行結果:
新聞熱點
疑難解答