欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python中matplotlib的用法及繪制簡單圖形詳解

 更新時間:2024年03月20日 09:37:40   作者:WDLOVELONGLONG  
這篇文章主要給大家介紹了關于python中matplotlib的用法及繪制簡單圖形的相關資料,matplotlib是python中用于繪制各種圖像的模塊,功能十分強大,通常與pandas模塊搭配使用,可以生成各種樣視的圖片,用于數(shù)據(jù)的分析和展示,需要的朋友可以參考下

一、matplotlib簡介

Matplotlib 是 Python 生態(tài)系統(tǒng)的一個重要組成部分,是用于可視化的繪圖庫,它提供了一整套和 matlab 相似的命令 API 和可視化界面,可以生成出版質(zhì)量級別的精美圖形,Matplotlib 使繪圖變得非常簡單,在易用性和性能間取得了優(yōu)異的平衡。

安裝成功后,即可以在 Python 中像使用其它庫一樣導入和使用 Matplotlib,而無需更多文件的配置,通常我們將其導入后使用別名 mpl

import matplotlib as mpl

Matplotlib 的配置更多的用于修改繪制圖形的默認樣式,Matplotlib 的配置文件中包含了各種默認的圖形配置信息,我們可以通過修改這些配置信息修改全局參數(shù)進行自定義所繪制圖形的樣式,這些參數(shù)可以改變圖形尺寸、配色方案、字體等一系列信息。 可以使用多種方式完成 Matplotlib 的繪圖配置,以下介紹三種配置方式通過配置文件進行配置、通過 rcParams['param_name'] 動態(tài)配置和通過 matplotlib.rc() 函數(shù)配置。

1.1 通過配置文件進行配置

配置文件同樣可以分為幾個不同的級別,如果我們希望修改所有的圖形使用的默認配置,則需要修改全局默認配置;而如果我們需要根據(jù)不同任務使用不同的配置,或者不同用戶使用不同的配置,則需要修改局部配置文件,以能夠在不同的用戶和任務中使用不同圖形配置。根據(jù)配置文件的作用范圍,可以分為三個級別:全局配置文件、用戶級配置文件和當前任務配置文件。 不同系統(tǒng)三個級別的文件位于不同目錄,可以通過使用以下代碼,查看配置文件的路徑:

import matplotlib as mpl
import os
?
# 全局配置目錄
print(mpl.__path__)
# 當前用戶配置目錄
print(mpl.get_configdir())
# 當前任務配置目錄,即當前代碼運行目錄
print(os.getcwd())
  • 全局配置文件 mpl-data\matplotlibrc,位于 Matplotlib 的安裝目錄直線,例如在 Window 下將其安裝在 D:\Program Files\Python39\lib\site-packages\matplotlib 目錄下,則全局配置文件的完整文件名為 D:\Program Files\Python39\lib\site-packages\matplotlib\mpl-data\matplotlibrc,默認情況下,圖形使用此配置文件進行繪制。

  • 用戶級配置文件 .matplotlib\matplotlibrc,位于用戶目錄之下,例如,用戶目錄為 C:\Users\Brainiac\,則相應配置文件為 C:\Users\Brainiac\.matplotlib\matplotlibc;如果不存在此文件,也可以根據(jù)全局配置文件與用戶需求自定創(chuàng)建和修改。

  • 當前任務配置文件 matplotlibrc,即位于代碼運行目錄之下,可以用于為當前任務的代碼定制 Matplotlib 配置,默認情況下不存在此文件,即默認使用全局或當前用戶配置文件,我們可以根據(jù)需要創(chuàng)建此文件,并根據(jù)需要進行配置。

1.2 通過 rcParams[‘param_name’] 配置

如果僅僅想在當前文件中簡單修改自定義配置,則可以通過 rcParams['param_name'] 更快速的修改。通過使用以下代碼,可以查看能夠自定義配置的屬性有哪些:

print(mpl.rc_params())
print(mpl.rcParamsDefault)
print(mpl.rcParams)
  • mpl.rc_params(): 這個方法返回一個包含當前matplotlib運行時配置參數(shù)的字典。這些配置參數(shù)包括圖形元素的默認顏色、線條樣式、字體設置、坐標軸配置等等。通過查看這些參數(shù),可以了解當前matplotlib的配置,以便更好地了解圖形的繪制方式和樣式設置。

  • mpl.rcParamsDefault: 這個屬性返回matplotlib的默認運行時配置參數(shù)。這些默認配置參數(shù)是在matplotlib庫安裝時預先設定的值。如果想恢復matplotlib的默認設置,可以使用這些默認參數(shù)進行重置。

  • mpl.rcParams: 這個屬性包含當前matplotlib的運行時配置參數(shù),代表了當前的matplotlib配置。可以在運行時通過修改這些參數(shù)來自定義圖形的顯示和樣式。例如,可以修改圖形的默認顏色、線條樣式、字體設置、坐標軸配置等等,以滿足特定的需求和美學要求。

使用 rcParams['param_name'] 方式修改配置的方式如下,其中 param_name 表示屬性名:

示例:

mpl.rcParams['lines.linewidth'] = 2
# 修改線條顏色為紅色
mpl.rcParams['lines.color'] = 'r'

在實際應用中,最常用的兩種配置包括中文和中文負號的顯示,如果不進行配置,默認不支持顯示中文與中文負號:

#顯示中文
mpl.rcParams['font.sans-serif'] = ['SimHei']
#顯示負號
mpl.rcParams['axes.unicode_minus']=False

1.3 通過 matplotlib.rc() 函數(shù)配置

同樣我們也可以使用 matplotlib.rc() 函數(shù)進行配置,使用方法如下:

# 修改線寬
mpl.rc('lines', linewidth=2, color='g')

其中 rc 函數(shù)的第一個參數(shù)為 group 表示屬性所屬的組,用于限定屬性的作用域,例如在以上示例中線寬 linewidth 屬于線 lines 用于限定只在線條中起作用,而對坐標軸等線寬 linewidth 不起作用,如果想要修改包括坐標軸在內(nèi)的圖形線寬 linewidth 則需要使用:

# 修改整個圖形線寬
mpl.rc('axes', linewidth=2)

二、matplotlib繪制簡單圖形

Matplotlib在圖(Figure)(例如,窗口,Jupyter小部件等)上繪制數(shù)據(jù),圖可以包含一個或多個軸域(Axes)。

2.1 利用plt.subplots繪圖

Axes是一個可以根據(jù)x-y坐標指定點的繪圖區(qū)域(或極坐標圖中的θ-r,3D圖中的x-y-z等)。創(chuàng)建帶有Axes的圖的最簡單方法是使用 pyplot.subplots。然后,可以使用Axes.plot在Axes上繪制一些數(shù)據(jù):

例如:

x = np.arange(-10,11)
y = x**2 -2*x + 9
fig,ax = plt.subplots() # 創(chuàng)建一個圖fig, 默認包含一個axes
ax.plot(x,y) # 繪制x-y的折線圖
plt.show()  # 顯示繪制的圖。請注意,如果使用save保存圖片,需要在show前面保存

2.2 圖(Figure)的結構

一幅圖有下面這些部分:標題(Title)、圖例(Legend)、x、y軸標簽(xlabel、ylabel)等,示意圖如下:

2.2.1 圖 Figure

完整的圖像。該圖跟蹤所有子軸域(Axes)---- 一組“特殊”畫作(標題,圖例,彩條等),甚至嵌套的子圖。

創(chuàng)建新圖的最簡單方法是使用 pyplot:

fig = plt.figure()  # 空圖,沒有Axes
fig, ax = plt.subplots()  #有1個Axes
fig, axs = plt.subplots(2, 2)  # 有2x2(兩行兩列) 個Axes

通常,將軸域(Axes)與 Figure 一起創(chuàng)建很方便,也可以在以后手動添加軸域。

2.2.2 軸域 Axes

軸域(Axes)是附加到圖(Figure)上,包含用于繪制數(shù)據(jù)的圖形。

通常包括兩個軸(Axis)對象。兩個軸分別提供刻度(ticks)和標簽(tick label),以便為軸中的數(shù)據(jù)提供比例。每個軸域還有一個標題(通過 set_title())設置)、一個 x 標簽(通過 set_xlabel()) 設置)和一個y 標簽(通過 set_ylabel()) 設置)。

Axes 類及其成員函數(shù)是使用 OOP 接口的主要入口點,并且在其上定義了大多數(shù)繪圖方法ax.plot()

2.2.3 軸 Axis

軸設置刻度(scale)和限制(limits)并且生成刻度(ticks,軸上的標記)和刻度標簽(ticklabels,標記刻度的字符串)ticks位置由定位器(Locator)確定,ticklabel 字符串由格式器(Formatter)設置。正確的定位器(Locator)格式器(Formatter)的組合可以對刻度位置和標簽進行非常精細的控制。

2.2.4 Artist

rtist這里翻譯成藝術家或畫家。

基本上,圖形上可見的所有內(nèi)容都是藝術家(甚至是圖形軸域對象)。這包括文本、Line2D 、集合、Patch等。渲染圖形時,所有藝術家都將被繪制到畫布上。大多數(shù)藝術家都與軸域關聯(lián);這樣的藝術家不能由多個軸域共享,也不能從一個軸移動到另一個軸。

2.2.5 繪圖函數(shù)的輸入數(shù)據(jù)類型

繪圖函數(shù)接收 numpy.arraynumpy.ma.masked_array作為輸入,或者是可以被傳遞給numpy.asarray的數(shù)據(jù)。pandas數(shù)據(jù)或numpy.matrix可能不會正常工作。常見的約定是在繪圖前將數(shù)據(jù)轉(zhuǎn)換成numpy.array,示例:

b = np.matrix([[1, 2], [3, 4]])
b_asarray = np.asarray(b) # 使用np.asarray()將其轉(zhuǎn)換成np.array類型

大多數(shù)方法還可以解析可尋址對象,如 dict,np.recarraypandas.DataFrame.

Matplotlib允許使用關鍵字參數(shù)生成圖像,傳遞和x,y相應的字符串:

scatter方法通常是由數(shù)據(jù)可視化庫(如Matplotlib或Seaborn)提供的一個函數(shù),用于繪制散點圖:

Matplotlib中scatter方法的參數(shù)和用法:

matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, edgecolors=None)

參數(shù)解釋:

  • x:橫坐標數(shù)據(jù),是一個數(shù)組或Series,用于表示散點圖中每個點的橫坐標位置。

  • y:縱坐標數(shù)據(jù),是一個數(shù)組或Series,用于表示散點圖中每個點的縱坐標位置。

  • s:點的大小,可以是一個數(shù)值或數(shù)組,控制散點的大小。默認值為 None,表示使用默認點大小。

  • c:點的顏色,可以是一個顏色字符串、顏色列表或數(shù)組,用于控制散點的顏色。默認值為 None,表示使用默認顏色。

  • marker:點的標記樣式,可以是一個標記字符串,例如 'o' 表示圓點,'s' 表示方塊等。默認值為 None,表示使用默認標記樣式。

  • cmap:用于指定顏色映射的Colormap對象或字符串。它在指定c參數(shù)為數(shù)值時使用,將數(shù)值映射到顏色空間。默認值為 None,表示使用默認顏色映射。

  • norm:用于歸一化數(shù)據(jù)的Normalize對象。它在指定c參數(shù)為數(shù)值時使用。默認值為 None,表示使用默認的歸一化方式。

  • vmin 和 vmax:用于設置顏色映射范圍的最小值和最大值。它們在指定c參數(shù)為數(shù)值時使用。默認值為 None,表示使用數(shù)據(jù)的最小值和最大值作為范圍。

  • alpha:點的透明度,取值范圍為 [0, 1],其中 0 表示完全透明,1 表示完全不透明。默認值為 None,表示使用默認透明度。

  • linewidths:點邊界的寬度,用于控制點的邊界線寬度。默認值為 None,表示使用默認線寬。

  • edgecolors:點邊界的顏色,用于控制點的邊界線顏色。默認值為 None,表示使用默認顏色。

示例:

np.random.seed(19680801)  # 偽隨機數(shù)
data = {'a': np.arange(50),
        'c': np.random.randint(0, 50, 50),
        'd': np.random.randn(50)}
data['b'] = data['a'] + 10 * np.random.randn(50)
data['d'] = np.abs(data['d']) * 100
?
fig, axes = plt.subplots(2,1) # fig 擁有2行1列個子圖,存放在axes數(shù)組(np.array類型)中。
print(axes)
ax = axes[0]
?
ax.scatter('a', 'b', c='c', s='d', data=data)
ax.set_xlabel('entry a')
ax.set_ylabel('entry b')
# 軸域2 ,去掉顏色c,形狀s參數(shù)。
ax2 = axes[1]
ax2.scatter('a', 'b', data=data)
plt.show()

ax.scatter('a', 'b', c='c', s='d', data=data)表示如下:

  • 'a', 'b'`:這是橫軸和縱軸的數(shù)據(jù)。'a'表示橫軸數(shù)據(jù),'b'表示縱軸數(shù)據(jù)。在這個例子中,'a'和'b'都是包含50個數(shù)據(jù)點的numpy數(shù)組,用于繪制散點圖的橫坐標和縱坐標。

  • c='c':這是設置散點的顏色參數(shù)。在這里,'c'代表顏色,意味著每個散點的顏色將由data['c']中的數(shù)據(jù)決定。data['c']是一個包含50個隨機整數(shù)的numpy數(shù)組,它將為每個數(shù)據(jù)點指定顏色。

  • s='d':這是設置散點的大小參數(shù)。在這里,'d'代表大小,意味著每個散點的大小將由data['d']中的數(shù)據(jù)決定。data['d']是一個包含50個隨機浮點數(shù)的numpy數(shù)組,它將為每個數(shù)據(jù)點指定大小。

  • data=data:這個參數(shù)告訴scatter函數(shù),要從data字典中獲取'x'和'y'軸的數(shù)據(jù)(即'a'和'b'),以及顏色和大小參數(shù)('c'和'd')。

2.2.6 編碼風格 Coding Styles,面向?qū)ο螅∣O)和pyplot函數(shù)接口

基本上有兩種使用 Matplotlib 的方法:

  • 顯式創(chuàng)建“圖形(Figures)”和“軸域(Axes)”,并在其上調(diào)用方法(“面向?qū)ο?(OO) 樣式”)。

  • 依靠 pyplot 自動創(chuàng)建和管理圖形和軸,并使用 pyplot 函數(shù)進行繪圖。

使用OO樣式,覺得OO樣式比較好,只需要在軸域(Axes)對象上設置就可以,非常清晰,示例:

plt.subplots() 是Matplotlib庫中用于創(chuàng)建子圖(subplot)的函數(shù)。它可以一次性創(chuàng)建一個包含多個子圖的圖形,并將這些子圖存儲在一個NumPy數(shù)組(np.array類型)中,使得對多個子圖進行管理和操作更加方便。

plt.subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)
  • nrows:表示子圖的行數(shù),即圖中有幾行子圖。

  • ncols:表示子圖的列數(shù),即圖中有幾列子圖。

  • sharex:如果設置為True,則所有子圖將共享相同的x軸(即橫坐標)。默認值為False,即每個子圖都有獨立的x軸。

  • sharey:如果設置為True,則所有子圖將共享相同的y軸(即縱坐標)。默認值為False,即每個子圖都有獨立的y軸。

  • squeeze:如果設置為True,則當行數(shù)或列數(shù)為1時,返回的子圖數(shù)組將是壓縮的。如果設置為False,則無論行數(shù)和列數(shù)是多少,返回的子圖數(shù)組都是二維數(shù)組。默認值為True。

  • subplot_kw:是一個字典,用于傳遞給每個子圖的配置參數(shù)。例如,您可以使用該參數(shù)設置標題、軸標簽等屬性。

  • gridspec_kw:是一個字典,用于傳遞給GridSpec對象的配置參數(shù)。GridSpec用于更靈活地排列子圖,可以用于創(chuàng)建非規(guī)則的子圖布局。

  • **fig_kw:這里的fig_kw是傳遞給plt.figure()的其他關鍵字參數(shù)。plt.figure()是創(chuàng)建圖形的函數(shù),您可以使用fig_kw參數(shù)來設置圖形的屬性,例如圖形大小、標題等。

x = np.linspace(0, 2, 100)  # 產(chǎn)生一些數(shù)據(jù)
?
# 使用OO風格,先產(chǎn)生兩個對象 圖和軸域 (fig, ax)
fig, ax = plt.subplots(figsize=(5, 5), layout='constrained')
# 調(diào)用ax對象的方法
ax.plot(x, x, label='linear')  # Plot some data on the axes. 繪制線性曲線,并給曲線添加標簽'線性'
ax.plot(x, x**2, label='quadratic')  # Plot more data on the axes...繪制二次方曲線,并給曲線添加標簽'二次方'
ax.plot(x, x**3, label='cubic')  # ... and some more. 繪制三次方曲線,并給曲線添加標簽'三次方'
ax.set_xlabel('x label')  # Add an x-label to the axes.
ax.set_ylabel('y label')  # Add a y-label to the axes.
ax.set_title("Simple Plot")  # Add a title to the axes.  添加軸域?qū)ο髽祟}
ax.legend()  # Add a legend. 添加圖例,用于顯示每條曲線對應的標簽
plt.show()

在這段代碼中,fig, ax = plt.subplots(figsize=(5, 2.7), layout='constrained') 是用Matplotlib創(chuàng)建圖形和子圖的語句。讓我來解釋每個參數(shù)的含義:

  • figsize=(5, 2.7):這是用于設置圖形大小的參數(shù)。figsize是一個元組,包含兩個元素,分別表示圖形的寬度和高度(單位是英寸)。在這里,設置圖形的寬度為5英寸,高度為2.7英寸。

  • layout='constrained':這是一個非常特殊的參數(shù),它在Matplotlib中沒有直接定義的意義。實際上,這個參數(shù)并不是Matplotlib中的標準參數(shù),所以在這個具體的代碼片段中,layout='constrained' 可能不會被正確地解釋或產(chǎn)生預期的效果。

在Matplotlib中,plt.subplots()函數(shù)的layout參數(shù)并不存在。plt.subplots()函數(shù)的參數(shù)中,并沒有名為layout的參數(shù)。如果要控制子圖的布局和排列方式,可以使用plt.subplot()plt.GridSpec()等其他函數(shù)進行更高級的子圖定位和布局設置。

使用pyplot函數(shù)風格:

x = np.linspace(0, 2, 100)  # 產(chǎn)生一些數(shù)據(jù)
plt.figure(figsize=(5, 5), layout='constrained')
plt.plot(x, x, label='linear')  # Plot some data on the (implicit) axes.
plt.plot(x, x**2, label='quadratic')  # etc.
plt.plot(x, x**3, label='cubic')
plt.xlabel('x label')
plt.ylabel('y label')
plt.title("Simple Plot")
plt.legend()
plt.show()

總結

到此這篇關于python中matplotlib的用法及繪制的文章就介紹到這了,更多相關python matplotlib用法詳解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python基礎入門之魔法方法與異常處理

    Python基礎入門之魔法方法與異常處理

    在python中,所有以“__"雙下劃線包起來的方法,都統(tǒng)稱為魔法方法,下面這篇文章主要給大家介紹了關于Python基礎入門之魔法方法與異常處理的相關資料,需要的朋友可以參考下
    2021-11-11
  • 詳解將Django部署到Centos7全攻略

    詳解將Django部署到Centos7全攻略

    這篇文章主要介紹了詳解將Django部署到Centos7全攻略,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • python多進程實現(xiàn)文件下載傳輸功能

    python多進程實現(xiàn)文件下載傳輸功能

    這篇文章主要為大家詳細介紹了python多進程實現(xiàn)文件下載傳輸功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • python解決報錯ImportError: Bad git executable.問題

    python解決報錯ImportError: Bad git executable.問題

    這篇文章主要介紹了python解決報錯ImportError: Bad git executable.問題。具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 解讀Scrapy回調(diào)函數(shù)callback傳遞參數(shù)的方式

    解讀Scrapy回調(diào)函數(shù)callback傳遞參數(shù)的方式

    這篇文章主要介紹了解讀Scrapy回調(diào)函數(shù)callback傳遞參數(shù)的方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Python實現(xiàn)數(shù)據(jù)集劃分(訓練集和測試集)

    Python實現(xiàn)數(shù)據(jù)集劃分(訓練集和測試集)

    這篇文章主要為大家詳細介紹了Python是如何實現(xiàn)數(shù)據(jù)集劃分的,分為訓練集和測試集,文中的實現(xiàn)方法講解詳細,感興趣的小伙伴可以了解一下
    2023-05-05
  • Python實現(xiàn)線程池之線程安全隊列

    Python實現(xiàn)線程池之線程安全隊列

    這篇文章主要為大家詳細介紹了Python實現(xiàn)線程池之線程安全隊列,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Python日志模塊logging基本用法分析

    Python日志模塊logging基本用法分析

    這篇文章主要介紹了Python日志模塊logging基本用法,結合實例形式分析了日志模塊logging的功能、常用函數(shù)、相關使用技巧與注意事項,需要的朋友可以參考下
    2018-08-08
  • Flask框架重定向,錯誤顯示,Responses響應及Sessions會話操作示例

    Flask框架重定向,錯誤顯示,Responses響應及Sessions會話操作示例

    這篇文章主要介紹了Flask框架重定向,錯誤顯示,Responses響應及Sessions會話操作,結合實例形式分析了flask框架中重定向,錯誤顯示,Responses響應及Sessions會話操作相關使用技巧與操作注意事項,需要的朋友可以參考下
    2019-08-08
  • Python解析JSON數(shù)據(jù)的基本方法實例代碼

    Python解析JSON數(shù)據(jù)的基本方法實例代碼

    JSON (JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式,下面這篇文章主要給大家介紹了關于Python解析JSON數(shù)據(jù)的基本方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-01-01

最新評論