溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時間:2020-07-17 11:45:50 來源:億速云 閱讀:327 作者:小豬 欄目:開發(fā)技術(shù)

這篇文章主要為大家展示了matplotlib生成的圖像中為什么無法顯示中文字符,內(nèi)容簡而易懂,希望大家可以學(xué)習(xí)一下,學(xué)習(xí)完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。

前幾天使用matplotlib 繪圖的時候發(fā)現(xiàn)無法使用中文字符,所以找了個筆記,順便分享給大家

開發(fā)環(huán)境

  • windows 8.1 64bit
  • python 3.6.0
  • matplotlib 3.2.1

問題背景

使用 matplotlib 繪制函數(shù)圖像的時候,發(fā)現(xiàn)設(shè)置圖像名稱或圖例需要漢字顯示的時候只能得到空格

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

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

原因分析

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

解決方案

解決方案1

python文件中添上一段語句

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

之后再次運行得出圖像 

解決方案2

制定加載本地的字體文件

在python文件中導(dǎo)入matplotlib的字體控制方法

from matplotlib.font_manager import FontProperties

另設(shè)font變量存儲設(shè)置好的屬性

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

設(shè)置 title 內(nèi)容時將 font的存儲對象賦給 fontproperties 屬性

plt.title(u'y=x 與 y=x^0.5 的函數(shù)圖像比較',fontproperties = font)

修改源碼后生成的圖像

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

附件

修改前的 python 文件

 import numpy as np
 import matplotlib.pyplot as plt

 x = np.linspace(0,100) # 設(shè)置自變量的取值[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 的函數(shù)圖像比較')

 plt.legend()
 plt.show()

經(jīng)解決方案1修改后的源碼

 import numpy as np
 import matplotlib.pyplot as plt

 x = np.linspace(0,100) # 設(shè)置自變量的取值[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 的函數(shù)圖像比較')
 plt.rcParams['font.sans-serif']=['Simhei']

 plt.legend()
 plt.show()

經(jīng)解決方案2修改后的源碼

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

 x = np.linspace(0,100) # 設(shè)置自變量的取值[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 的函數(shù)圖像比較',fontproperties = font)

 plt.legend()
 plt.show()

以上就是關(guān)于matplotlib生成的圖像中為什么無法顯示中文字符的內(nèi)容,如果你們有學(xué)習(xí)到知識或者技能,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI