Python常見庫matplotlib學習筆記之畫圖文字的中文顯示
系列文章目錄
- 第一章 Python常見庫matplotlib之畫圖文字的中文顯示
- 第二章 Python常見庫matplotlib之畫圖中各個模塊的含義及修改方式
- 第三章 Python常見庫matplotlib之多個子圖繪圖
前言
在數據可視化時,常常需要使用圖例來解釋圖中不同元素的含義。在論文寫作時尤其是畢業(yè)論文寫作時,需要圖中文字都顯示中文,數字都用新羅馬體。然而,matplotlib庫默認是不支持中文顯示的,因此在繪制圖例時,需要進行一些設置才能顯示中文。本篇文章將介紹如何使用matplotlib庫繪制中文圖例。
一、matplotlib是什么?
Matplotlib是一個用于創(chuàng)建可視化圖表的Python庫,它支持多種圖表類型,包括線圖、散點圖、條形圖、餅圖、3D圖等,是數據分析、科學計算和工程應用中最常用的可視化工具之一。Matplotlib庫廣泛用于Python的數據分析、機器學習、科學計算等領域,以及研究、教育和工業(yè)生產中。它是一個開源軟件,可以在Python的多個版本中使用。
matplotlib庫的安裝很簡單
pip install matplotlib
本文使用的matplotlib版本為3.6.2??梢暂斎胂旅娴拿钪苯影惭b該版本。
pip install matplotlib==3.6.2
二、使用方法
以下面一段簡單代碼為示例,來講述如何改變繪圖中的文字。
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('函數') # 添加圖例 plt.legend(loc='upper right') # 顯示圖像 plt.show()
上面這段代碼實現(xiàn)了繪制正弦和余弦曲線在同一幅圖上,其顯示結果是下圖這樣的
可見如果不添加字體設置,橫縱坐標及圖例的中文都是方框。
1.尋找所需要的字體
(1)下載字體
linux
一般是不會自帶微軟雅黑、宋體、新羅馬這樣的字體的。我們需要去找。如果你身邊有windows
系統(tǒng)的電腦,可以去下面幾個路徑下去拷貝
字體名稱 | 路徑 |
---|---|
微軟雅黑 | C:\Windows\Fonts\msyh.ttc |
宋體 | C:\Windows\Fonts\simsun.ttc |
新羅馬 | C:\Windows\Fonts\TIMES.TTF |
懶得話也可以下載我上傳的字體包
提取碼: ehtw
(2)放置到合適路徑
linux mint
下的字體文件一般放在“/usr/share/fonts/truetype”,如果該目錄不存在,則可以手動創(chuàng)建。一般字體文件都會在truetype文件夾下還有一層文件夾,才到字體文件。
以dejavu為例,就是這樣的。
所以我們也可以創(chuàng)建一個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)確認字體文件是否已經安裝
在終端輸入下面的代碼,可以看到微軟雅黑的安裝路徑
fc-list | grep -i yahei
同理,可以查看新羅馬的
fc-list | grep TIMES
查看宋體的
fc-list | grep SUN
(5)刪除matplotlib的緩存
這一步非常重要,有很多人都會忘記
rm rf ~/.cache/matplotlib
2.設置字體
(1)全局設置字體
將下面代碼加在之前的代碼前面即可。
# 設置字體 plt.rcParams['font.family'] = 'Microsoft YaHei'
最終代碼如下:
import numpy as np import matplotlib.pyplot as plt # 設置字體 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('函數') # 添加圖例 plt.legend(loc='upper right') # 顯示圖像 plt.show()
運行代碼,看到繪圖出現(xiàn)中文了。
把plt.rcParams['font.family'] = 'Microsoft YaHei'
這行注釋,替換成plt.rcParams['font.family'] = 'SimSun'
便會顯示宋體。
如果開啟plt.rcParams['font.family'] = 'Times New Roman'
。我們發(fā)現(xiàn)又出現(xiàn)框框了,顯然新羅馬不支持中文顯示,只有數字變成新羅馬體了。
對不同位置的目標,設置不同的字體,可以如下代碼修改
import numpy as np import matplotlib.pyplot as plt # 設置字體 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('橫軸', fontfamily='SimSun') # 設置縱軸字體 plt.ylabel('縱軸', fontfamily='SimSun') # 設置標題字體 plt.title('函數', fontfamily='SimSun') # 設置刻度字體 plt.xticks(fontfamily='Times New Roman') plt.yticks(fontfamily='Times New Roman') # 設置圖例字體 plt.legend(loc='upper right', fontsize=12, edgecolor='black', fancybox=False, framealpha=1, prop={'family': 'SimSun'}) # 顯示圖像 plt.show()
最終顯示結果
(2)局部設置字體(強烈推薦)
以上的設置到一臺新機器上就得重新拷貝或者下載字體文件,似乎有點麻煩?,F(xiàn)在介紹第二種方法,直接把自己放在運行程序或者腳本的同級目錄下。這樣字體跟著代碼走,到一個新環(huán)境下只要安裝了matplotlib就可以直接運行。
import numpy as np import matplotlib.pyplot as plt import matplotlib.font_manager as fm # 指定字體 font_path = 'SIMSUN.TTC' # 這里也可以填其他字體的絕對路徑,只填名稱表示本程序與該字體在同一級目錄下 font_prop = fm.FontProperties(fname=font_path, size=12) en_font_path = 'TIMES.TTF' # 這里也可以填其他字體的絕對路徑,只填名稱表示本程序與該字體在同一級目錄下 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('函數', 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()
查看顯示結果
總結
本文簡單介紹了如何使用matplotlib庫添加中文字體顯示的辦法。一種為全局設置的,一種為當前程序設置的。
到此這篇關于Python常見庫matplotlib學習筆記之畫圖文字的中文顯示的文章就介紹到這了,更多相關matplotlib畫圖文字中文顯示內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
關于python3.9安裝wordcloud出錯的問題及解決辦法
這篇文章主要介紹了關于python3.9安裝wordcloud出錯的問題及解決辦法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11python 基于UDP協(xié)議套接字通信的實現(xiàn)
這篇文章主要介紹了python 基于UDP協(xié)議套接字通信的實現(xiàn),幫助大家更好的理解和使用python,感興趣的朋友可以了解下2021-01-01