1. 程式人生 > 程式設計 >matplotlib 生成的影象中無法顯示中文字元的解決方法

matplotlib 生成的影象中無法顯示中文字元的解決方法

前幾天使用matplotlib 繪圖的時候發現無法使用中文字元,所以找了個筆記,順便分享給大家

開發環境

  • windows 8.1 64bit
  • python 3.6.0
  • matplotlib 3.2.1

問題背景

使用 matplotlib 繪製函式影象的時候,發現設定影象名稱或圖例需要漢字顯示的時候只能得到空格

生成影象中的中文錯誤效果

matplotlib 生成的影象中無法顯示中文字元的解決方法

原因分析

python中的matplotlib僅支援Unicode編碼,預設是不顯示中文的.

解決方案

解決方案1

python檔案中添上一段語句

plt.rcParams['font.sans-serif']=['Simhei']

之後再次執行得出影象

解決方案2

制定載入本地的字型檔案

在python檔案中匯入matplotlib的字型控制方法

from matplotlib.font_manager import FontProperties

另設font變數儲存設定好的屬性

font = FontProperties(fname=r'C:\Windows\Fonts\simhei.ttf',size=14)

設定 title 內容時將 font的儲存物件賦給 fontproperties 屬性

plt.title(u'y=x 與 y=x^0.5 的函式影象比較',fontproperties = font)

修改原始碼後生成的影象

matplotlib 生成的影象中無法顯示中文字元的解決方法

附件

修改前的 python 檔案

 import numpy as np
 import matplotlib.pyplot as plt

 x = np.linspace(0,100) # 設定自變數的取值[0,100]

 y1 = x
 y2 = x**0.5

 plt.figure()
 plt.plot(x,y1,label='y=x')
 plt.plot(x,y2,label='y=x^0.5',color='red')

 plt.title('y=x 與 y=x^0.5 的函式影象比較')

 plt.legend()
 plt.show()

經解決方案1修改後的原始碼

 import numpy as np
 import matplotlib.pyplot as plt

 x = np.linspace(0,color='red')

 plt.title('y=x 與 y=x^0.5 的函式影象比較')
 plt.rcParams['font.sans-serif']=['Simhei']

 plt.legend()
 plt.show()

經解決方案2修改後的原始碼

 import numpy as np
 from matplotlib.font_manager import FontProperties
 import matplotlib.pyplot as plt

 x = np.linspace(0,100]
 y1 = x
 y2 = x**0.5

 plt.figure()
 plt.plot(x,color='red')
 font = FontProperties(fname=r'C:\Windows\Fonts\simhei.ttf',size=14)

 plt.title(u'y=x 與 y=x^0.5 的函式影象比較',fontproperties = font)

 plt.legend()
 plt.show()

到此這篇關於matplotlib 生成的影象中無法顯示中文字元的解決方法的文章就介紹到這了,更多相關matplotlib影象無法顯示中文內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!