使用 matplotlib 生成的圖像中無法正常顯示中文字符的解決方案 python matplotlib


matplotlib 生成的圖像中無法顯示中文字符

開發環境

  • windows 8.1 64bit
  • python 3.6.0
  • matplotlib 3.2.1

問題背景

使用 matplotlib 繪制函數圖像的時候,發現設置圖像名稱或圖例需要漢字顯示的時候只能得到空格

生成圖像中的中文錯誤效果

原因分析

python中的matplotlib僅支持Unicode編碼,默認是不顯示中文的.

解決方案

解決方案1

python文件中添上一段語句

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

之后再次運行得出圖像

解決方案2

制定加載本地的字體文件

  1. 在python文件中導入matplotlib的字體控制方法
from matplotlib.font_manager import FontProperties  
  1. 另設font變量存儲設置好的屬性
font = FontProperties(fname=r'C:\Windows\Fonts\simhei.ttf',size=14)  
  1. 設置 title 內容時將 font的存儲對象賦給 fontproperties 屬性
plt.title(u'y=x 與 y=x^0.5 的函數圖像比較',fontproperties = font)

注意中文字符前一定要加 u

修改源碼后生成的圖像

附件

修改前的 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,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.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) # 設置自變量的取值[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')
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()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM