Python基礎(chǔ)教程之Matplotlib圖形繪制詳解
1.引言
以下是Matplotlib
的一些主要特點(diǎn):
- 簡單易用:
Matplotlib
提供了簡單而直觀的API,使得繪圖變得容易上手和使用。 - 多樣化的圖形:它支持各種常見的圖形類型,包括線圖、散點(diǎn)圖、柱狀圖、餅圖、等高線圖、3D圖等。你可以根據(jù)需求選擇合適的圖形進(jìn)行繪制。
- 高度可定制性:
Matplotlib
提供了大量的參數(shù)選項(xiàng),你可以自定義圖形的各個(gè)方面,包括線型、顏色、標(biāo)簽、標(biāo)題、網(wǎng)格等,以滿足特定的需求。 - 高質(zhì)量的輸出:
Matplotlib
能夠生成高質(zhì)量的圖形輸出,支持多種輸出格式,如PNG、JPEG、PDF等,方便在論文、報(bào)告和演示文稿中使用。 - 與NumPy集成:
Matplotlib
與NumPy緊密集成,可以直接接收NumPy數(shù)組作為輸入數(shù)據(jù),并且能夠方便地處理和呈現(xiàn)這些數(shù)據(jù)。 - 支持交互式繪圖:除了靜態(tài)圖形,
Matplotlib
還提供了交互式繪圖的功能,可以通過添加交互元素和事件處理來實(shí)現(xiàn)用戶與圖形的交互操作。
首先,確保你已經(jīng)安裝了matplotlib和NumPy模塊,可以通過以下命令來安裝它們:
pip install matplotlib numpy
接下來,導(dǎo)入需要的模塊:
import matplotlib.pyplot as plt import numpy as np
2. 繪制折線圖:
x = np.linspace(0, 2*np.pi, 100) # 在0到2π之間生成100個(gè)點(diǎn)作為x軸坐標(biāo) y = np.sin(x) # 通過sin函數(shù)生成對應(yīng)的y軸坐標(biāo) plt.plot(x, y) # 繪制折線圖 plt.xlabel('x') # 設(shè)置x軸標(biāo)簽 plt.ylabel('y') # 設(shè)置y軸標(biāo)簽 plt.title('Sin Function') # 設(shè)置標(biāo)題 plt.show() # 顯示圖形
3. 繪制散點(diǎn)圖
x = np.random.rand(100) # 生成100個(gè)隨機(jī)數(shù)作為x軸坐標(biāo) y = np.random.rand(100) # 生成100個(gè)隨機(jī)數(shù)作為y軸坐標(biāo) plt.scatter(x, y) # 繪制散點(diǎn)圖 plt.xlabel('x') # 設(shè)置x軸標(biāo)簽 plt.ylabel('y') # 設(shè)置y軸標(biāo)簽 plt.title('散點(diǎn)圖') # 設(shè)置標(biāo)題 plt.show() # 顯示圖形
繪制的圖形如下,我們可以看到,標(biāo)題本應(yīng)當(dāng)顯示散點(diǎn)圖,但實(shí)際上顯示的卻是三個(gè)小方格。為什么會(huì)這樣呢?
原因在于 matplotlib
的作者在設(shè)計(jì)時(shí)并沒有直接支持中文,主要原因是中文字體渲染較為復(fù)雜,并且涉及到不同操作系統(tǒng)、字體庫和編程環(huán)境的差異。這使得在繪制中文時(shí)可能遇到各種字體顯示問題,例如亂碼、錯(cuò)位等。但是,我們可以通過一些方法來解決這個(gè)問題。
4.解決中文顯示問題
在使用 matplotlib
繪圖時(shí)出現(xiàn)中文顯示問題,可以按照以下步驟解決:
1、配置字體路徑
這種方法是墻裂不推薦的,原因是需要修改matplotlib本身的配置文件,同樣的代碼換個(gè)環(huán)境執(zhí)行,可能中文就顯示異常了,但也在這介紹一下。找到系統(tǒng)中已安裝的中文字體文件,通常位于Windows的C:\Windows\Fonts目錄下,或者其他操作系統(tǒng)中類似的位置。你也可以使用如下代碼查看:
import matplotlib.font_manager as fm # 獲取系統(tǒng)中所有已安裝的字體信息 font_info = fm.findSystemFonts() # 輸出每個(gè)字體的名稱和路徑 for font_path in font_info: font_prop = fm.FontProperties(fname=font_path) font_name = font_prop.get_name() print(f"Font Name: {font_name}") print(f"Font Path: {font_path}\n")
將字體文件路徑添加到matplotlib的配置文件中??梢栽赑ython中執(zhí)行以下代碼查看matplotlibrc
配置文件的所在路徑。
import matplotlib print(matplotlib.matplotlib_fname())
找到下圖所示這幾行配置,這里我將sans-serif
改成 微軟雅黑字體:Microsoft YaHei
,并取消這幾行的注釋,運(yùn)行后可以看到中文正常顯示。
2.修改rcParams來達(dá)到效果,這種方法適合用于修改默認(rèn)字體、默認(rèn)樣式等,對于字體個(gè)性化需求較高的圖形,不建議使用此方法。
import matplotlib.pyplot as plt ##################################### from matplotlib import rcParams rcParams['font.family'] = 'Microsoft YaHei'
3.設(shè)置FontProperties,推薦使用此方法來對字體進(jìn)行設(shè)置,比較靈活
import matplotlib.pyplot as plt import numpy as np from matplotlib.font_manager import FontProperties microsoft_yahei_font = FontProperties('Microsoft YaHei') fang_song_font = FontProperties(fname=r'C:\Windows\Fonts\simfang.ttf') x = np.random.rand(100) # 生成100個(gè)隨機(jī)數(shù)作為x軸坐標(biāo) y = np.random.rand(100) # 生成100個(gè)隨機(jī)數(shù)作為y軸坐標(biāo) plt.scatter(x, y) # 繪制散點(diǎn)圖 plt.xlabel('x軸') # 設(shè)置x軸標(biāo)簽 plt.ylabel('y軸',fontproperties=microsoft_yahei_font) # 設(shè)置y軸標(biāo)簽 plt.title('散點(diǎn)圖',fontproperties=fang_song_font) # 設(shè)置標(biāo)題 plt.show()
繪制的圖形中,可以看到上述設(shè)置字體及未設(shè)置的區(qū)別,推薦使用此方法。
5.劃分子圖
在Matplotlib中,使用子圖(Subplot)可以在一個(gè)繪圖窗口中創(chuàng)建多個(gè)小的坐標(biāo)系,從而將多個(gè)圖形放置在同一個(gè)圖像中,并進(jìn)行靈活的布局。
import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties import numpy as np # 設(shè)置字體為微軟雅黑 font = FontProperties('Microsoft YaHei') # 生成隨機(jī)數(shù)據(jù) categories = ['A', 'B', 'C', 'D'] values = np.random.rand(len(categories)) # 創(chuàng)建一個(gè)包含兩個(gè)子圖的畫布 fig, ax = plt.subplots(2, 1) # 在第一個(gè)子圖上繪制柱狀圖 ax[0].bar(categories, values) ax[0].set_title('柱狀圖', fontproperties=font) # 在第二個(gè)子圖上繪制另一個(gè)餅圖 # 生成隨機(jī)數(shù)據(jù) sizes = np.random.rand(len(categories)) ax[1].pie(sizes, labels=categories, autopct='%1.1f%%') ax[1].set_title('帶百分比的餅圖', fontproperties=font) # 調(diào)整子圖之間的間距和布局 plt.tight_layout() # 顯示圖形 plt.show()
通過調(diào)整subplots()函數(shù)的參數(shù),你可以創(chuàng)建不同尺寸和布局的子圖,以滿足你的需求。同時(shí),你也可以使用其他的matplotlib繪圖函數(shù)在子圖中繪制各種類型的圖形。
6.總結(jié)
Python的Matplotlib是一個(gè)功能強(qiáng)大的數(shù)據(jù)可視化庫,可以用于創(chuàng)建各種類型的靜態(tài)、動(dòng)態(tài)和交互式圖形。它提供了廣泛的繪圖選項(xiàng)和配置參數(shù),使用戶能夠根據(jù)自己的需求定制圖形。常見的一些用法如下:
1、使用不同的matplotlib繪圖函數(shù)創(chuàng)建所需的圖形,如折線圖、散點(diǎn)圖、柱狀圖、餅圖等。常用的繪圖函數(shù)有plt.plot()
、plt.scatter()
、plt.bar()
、plt.pie()
等。
2、配置圖形屬性:可以使用各種屬性設(shè)置函數(shù)來自定義圖形,如標(biāo)題、坐標(biāo)軸標(biāo)簽、圖例、線型、顏色、標(biāo)記符號(hào)等。常用的屬性設(shè)置函數(shù)有plt.title()
、plt.xlabel()
、plt.ylabel()
、plt.legend()
、plt.grid()
等。
3、顯示圖形:通過調(diào)用plt.show()
函數(shù)顯示圖形。該函數(shù)可以在所有繪圖操作完成后調(diào)用,也可以在每次繪制完一個(gè)子圖后調(diào)用,以便逐個(gè)顯示子圖。
4、保存圖形:通過使用plt.savefig()
函數(shù)將繪制的圖形保存為文件,常見的文件格式包括PNG、JPEG、PDF等。
5、繪制多個(gè)子圖:使用plt.subplots()
函數(shù)可以創(chuàng)建一個(gè)包含多個(gè)子圖的畫布,然后在不同的子圖上繪制不同的圖形??梢允褂盟饕虿季謪?shù)來控制子圖的位置和排列方式。
Matplotlib提供了豐富的樣式選項(xiàng)和布局控制功能,可以幫助美化圖形和調(diào)整圖形的形狀、大小和比例。除了基本的Matplotlib庫外,還有一些擴(kuò)展庫可以進(jìn)一步增強(qiáng)Matplotlib的功能。例如,Seaborn可以提供更漂亮的圖形樣式,Basemap可以繪制地理地圖,3D可視化庫可以創(chuàng)建三維圖形等等。
總之,Matplotlib是Python中最常用和最受歡迎的數(shù)據(jù)可視化庫之一。通過靈活的接口和強(qiáng)大的功能,它可以滿足各種數(shù)據(jù)可視化需求,并幫助用戶以可視化的方式更好地理解和呈現(xiàn)數(shù)據(jù)。
以上就是Python基礎(chǔ)教程之Matplotlib圖形繪制詳解的詳細(xì)內(nèi)容,更多關(guān)于Python Matplotlib圖形繪制的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python數(shù)組條件過濾filter函數(shù)使用示例
數(shù)組條件過濾簡潔實(shí)現(xiàn)方式,使用filter函數(shù),實(shí)現(xiàn)一個(gè)條件判斷函數(shù)即可,示例代碼如下2014-07-07如何利用python實(shí)現(xiàn)把視頻轉(zhuǎn)換成gif圖形
將視頻轉(zhuǎn)換為 GIF 圖形的重要性不言而喻,在信息快速傳播和多種社交平臺(tái)廣泛應(yīng)用的背景下,GIF 動(dòng)畫不僅為個(gè)人用戶提供了一種輕松的表達(dá)方式,本文給大家介紹了如何利用python實(shí)現(xiàn)把視頻轉(zhuǎn)換成gif圖形,需要的朋友可以參考下2024-10-10Python模塊相關(guān)知識(shí)點(diǎn)小結(jié)
這篇文章主要介紹了Python模塊相關(guān)知識(shí)點(diǎn),總結(jié)分析了Python模塊的功能、原理、使用方法與操作注意事項(xiàng),需要的朋友可以參考下2020-03-03使用jupyter?notebook保存python代碼為.py格式問題
這篇文章主要介紹了使用jupyter?notebook保存python代碼為.py格式問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07在python中利用GDAL對tif文件進(jìn)行讀寫的方法
今天小編就為大家分享一篇在python中利用GDAL對tif文件進(jìn)行讀寫的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11python中sqllite插入numpy數(shù)組到數(shù)據(jù)庫的實(shí)現(xiàn)方法
本文給大家介紹python中sqllite插入numpy數(shù)組到數(shù)據(jù)庫的實(shí)現(xiàn)方法,在文章底部給大家提到了Python 操作sqlite數(shù)據(jù)庫及保存查詢numpy類型數(shù)據(jù)的實(shí)例代碼,需要的朋友參考下吧2021-06-06