Python常見(jiàn)庫(kù)matplotlib學(xué)習(xí)筆記之畫圖文字的中文顯示
系列文章目錄
- 第一章 Python常見(jiàn)庫(kù)matplotlib之畫圖文字的中文顯示
- 第二章 Python常見(jiàn)庫(kù)matplotlib之畫圖中各個(gè)模塊的含義及修改方式
- 第三章 Python常見(jiàn)庫(kù)matplotlib之多個(gè)子圖繪圖
前言
在數(shù)據(jù)可視化時(shí),常常需要使用圖例來(lái)解釋圖中不同元素的含義。在論文寫作時(shí)尤其是畢業(yè)論文寫作時(shí),需要圖中文字都顯示中文,數(shù)字都用新羅馬體。然而,matplotlib庫(kù)默認(rèn)是不支持中文顯示的,因此在繪制圖例時(shí),需要進(jìn)行一些設(shè)置才能顯示中文。本篇文章將介紹如何使用matplotlib庫(kù)繪制中文圖例。
一、matplotlib是什么?
Matplotlib是一個(gè)用于創(chuàng)建可視化圖表的Python庫(kù),它支持多種圖表類型,包括線圖、散點(diǎn)圖、條形圖、餅圖、3D圖等,是數(shù)據(jù)分析、科學(xué)計(jì)算和工程應(yīng)用中最常用的可視化工具之一。Matplotlib庫(kù)廣泛用于Python的數(shù)據(jù)分析、機(jī)器學(xué)習(xí)、科學(xué)計(jì)算等領(lǐng)域,以及研究、教育和工業(yè)生產(chǎn)中。它是一個(gè)開(kāi)源軟件,可以在Python的多個(gè)版本中使用。
matplotlib庫(kù)的安裝很簡(jiǎn)單
pip install matplotlib
本文使用的matplotlib版本為3.6.2??梢暂斎胂旅娴拿钪苯影惭b該版本。
pip install matplotlib==3.6.2
二、使用方法
以下面一段簡(jiǎn)單代碼為示例,來(lái)講述如何改變繪圖中的文字。
import numpy as np
import matplotlib.pyplot as plt
# 繪制曲線
x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x, y1, label=u'正弦曲線')
plt.plot(x, y2, label=u'余弦曲線')
plt.xlabel('橫軸')
plt.ylabel('縱軸')
plt.title('函數(shù)')
# 添加圖例
plt.legend(loc='upper right')
# 顯示圖像
plt.show()上面這段代碼實(shí)現(xiàn)了繪制正弦和余弦曲線在同一幅圖上,其顯示結(jié)果是下圖這樣的

可見(jiàn)如果不添加字體設(shè)置,橫縱坐標(biāo)及圖例的中文都是方框。
1.尋找所需要的字體
(1)下載字體
linux一般是不會(huì)自帶微軟雅黑、宋體、新羅馬這樣的字體的。我們需要去找。如果你身邊有windows系統(tǒng)的電腦,可以去下面幾個(gè)路徑下去拷貝
| 字體名稱 | 路徑 |
|---|---|
| 微軟雅黑 | C:\Windows\Fonts\msyh.ttc |
| 宋體 | C:\Windows\Fonts\simsun.ttc |
| 新羅馬 | C:\Windows\Fonts\TIMES.TTF |
懶得話也可以下載我上傳的字體包
提取碼: ehtw
(2)放置到合適路徑
linux mint下的字體文件一般放在“/usr/share/fonts/truetype”,如果該目錄不存在,則可以手動(dòng)創(chuàng)建。一般字體文件都會(huì)在truetype文件夾下還有一層文件夾,才到字體文件。

以dejavu為例,就是這樣的。

所以我們也可以創(chuàng)建一個(gè)yahei的文件夾放置其字體文件
# 創(chuàng)建yahei文件夾 sudo mkdir /usr/share/fonts/truetype/yahei # 拷貝字體文件到該文件夾下 sudo cp msyh.ttc /usr/share/fonts/truetype/yahei/
(3)刷新字體緩存
sudo fc-cache -f -v
(4)確認(rèn)字體文件是否已經(jīng)安裝
在終端輸入下面的代碼,可以看到微軟雅黑的安裝路徑
fc-list | grep -i yahei
同理,可以查看新羅馬的
fc-list | grep TIMES
查看宋體的
fc-list | grep SUN
(5)刪除matplotlib的緩存
這一步非常重要,有很多人都會(huì)忘記
rm rf ~/.cache/matplotlib
2.設(shè)置字體
(1)全局設(shè)置字體
將下面代碼加在之前的代碼前面即可。
# 設(shè)置字體 plt.rcParams['font.family'] = 'Microsoft YaHei'
最終代碼如下:
import numpy as np
import matplotlib.pyplot as plt
# 設(shè)置字體
plt.rcParams['font.family'] = 'Microsoft YaHei'
# plt.rcParams['font.family'] = 'SimSun'
# plt.rcParams['font.family'] = 'Times New Roman'
# 繪制曲線
x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x, y1, label=u'正弦曲線')
plt.plot(x, y2, label=u'余弦曲線')
plt.xlabel('橫軸')
plt.ylabel('縱軸')
plt.title('函數(shù)')
# 添加圖例
plt.legend(loc='upper right')
# 顯示圖像
plt.show()運(yùn)行代碼,看到繪圖出現(xiàn)中文了。

把plt.rcParams['font.family'] = 'Microsoft YaHei'這行注釋,替換成plt.rcParams['font.family'] = 'SimSun'便會(huì)顯示宋體。

如果開(kāi)啟plt.rcParams['font.family'] = 'Times New Roman'。我們發(fā)現(xiàn)又出現(xiàn)框框了,顯然新羅馬不支持中文顯示,只有數(shù)字變成新羅馬體了。

對(duì)不同位置的目標(biāo),設(shè)置不同的字體,可以如下代碼修改
import numpy as np
import matplotlib.pyplot as plt
# 設(shè)置字體
plt.rcParams['font.family'] = 'SimSun'
plt.rcParams['font.family'] = 'Times New Roman'
# 繪制曲線
x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x, y1, label=u'正弦曲線')
plt.plot(x, y2, label=u'余弦曲線')
# 設(shè)置橫軸字體
plt.xlabel('橫軸', fontfamily='SimSun')
# 設(shè)置縱軸字體
plt.ylabel('縱軸', fontfamily='SimSun')
# 設(shè)置標(biāo)題字體
plt.title('函數(shù)', fontfamily='SimSun')
# 設(shè)置刻度字體
plt.xticks(fontfamily='Times New Roman')
plt.yticks(fontfamily='Times New Roman')
# 設(shè)置圖例字體
plt.legend(loc='upper right', fontsize=12, edgecolor='black', fancybox=False, framealpha=1, prop={'family': 'SimSun'})
# 顯示圖像
plt.show()最終顯示結(jié)果

(2)局部設(shè)置字體(強(qiáng)烈推薦)
以上的設(shè)置到一臺(tái)新機(jī)器上就得重新拷貝或者下載字體文件,似乎有點(diǎn)麻煩?,F(xiàn)在介紹第二種方法,直接把自己放在運(yùn)行程序或者腳本的同級(jí)目錄下。這樣字體跟著代碼走,到一個(gè)新環(huán)境下只要安裝了matplotlib就可以直接運(yùn)行。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
# 指定字體
font_path = 'SIMSUN.TTC' # 這里也可以填其他字體的絕對(duì)路徑,只填名稱表示本程序與該字體在同一級(jí)目錄下
font_prop = fm.FontProperties(fname=font_path, size=12)
en_font_path = 'TIMES.TTF' # 這里也可以填其他字體的絕對(duì)路徑,只填名稱表示本程序與該字體在同一級(jí)目錄下
en_font_prop = fm.FontProperties(fname=en_font_path, size=12)
x = np.linspace(0, 2 * np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x, y1, label=u'正弦曲線')
plt.plot(x, y2, label=u'余弦曲線')
plt.xlabel('橫軸', fontproperties=font_prop)
plt.ylabel('縱軸', fontproperties=font_prop)
plt.title('函數(shù)', fontproperties=font_prop)
plt.xticks(fontproperties=en_font_prop)
plt.yticks(fontproperties=en_font_prop)
plt.legend(loc='upper right', fontsize=12, edgecolor='black', fancybox=False, framealpha=1, prop=font_prop)
plt.show()查看顯示結(jié)果

總結(jié)
本文簡(jiǎn)單介紹了如何使用matplotlib庫(kù)添加中文字體顯示的辦法。一種為全局設(shè)置的,一種為當(dāng)前程序設(shè)置的。
到此這篇關(guān)于Python常見(jiàn)庫(kù)matplotlib學(xué)習(xí)筆記之畫圖文字的中文顯示的文章就介紹到這了,更多相關(guān)matplotlib畫圖文字中文顯示內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
django 通過(guò)URL訪問(wèn)上傳的文件方法
今天小編就為大家分享一篇django 通過(guò)URL訪問(wèn)上傳的文件方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07
關(guān)于python3.9安裝wordcloud出錯(cuò)的問(wèn)題及解決辦法
這篇文章主要介紹了關(guān)于python3.9安裝wordcloud出錯(cuò)的問(wèn)題及解決辦法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11
python 基于UDP協(xié)議套接字通信的實(shí)現(xiàn)
這篇文章主要介紹了python 基于UDP協(xié)議套接字通信的實(shí)現(xiàn),幫助大家更好的理解和使用python,感興趣的朋友可以了解下2021-01-01
利用Python繪制Jazz網(wǎng)絡(luò)圖的例子
今天小編就為大家分享一篇利用Python繪制Jazz網(wǎng)絡(luò)圖的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11
Python爬蟲(chóng)之爬取某文庫(kù)文檔數(shù)據(jù)
這篇文章主要介紹了Python爬蟲(chóng)之爬取某文庫(kù)文檔數(shù)據(jù),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)python的小伙伴們有很好地幫助,需要的朋友可以參考下2021-04-04
keras獲得某一層或者某層權(quán)重的輸出實(shí)例
今天小編就為大家分享一篇keras獲得某一層或者某層權(quán)重的輸出實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01

