Python matplotlib繪制圖形實(shí)例(包括點(diǎn),曲線,注釋和箭頭)
Python的matplotlib模塊繪制圖形功能很強(qiáng)大,今天就用pyplot繪制一個(gè)簡(jiǎn)單的圖形,圖形中包括曲線、曲線上的點(diǎn)、注釋和指向點(diǎn)的箭頭。
1. 結(jié)果預(yù)覽:

2. 代碼如下:
from matplotlib import pyplot as plt
import numpy as np
# 繪制曲線
x = np.linspace(2, 21, 20) # 取閉區(qū)間[2, 21]之間的等差數(shù)列,列表長(zhǎng)度20
y = np.log10(x) + 0.5
plt.figure() # 添加一個(gè)窗口。如果只顯示一個(gè)窗口,可以省略該句。
plt.plot(x, y) # plot在一個(gè)figure窗口中添加一個(gè)圖,繪制曲線,默認(rèn)顏色
# 繪制離散點(diǎn)
plt.plot(x, y, '.y') # 繪制黃色的點(diǎn),為了和曲線顏色不一樣
x0, y0 = 15, np.log10(15) + 0.5
plt.annotate('Interpolation point', xy=(x0, y0), xytext=(x0, y0 - 1), arrowprops=dict(arrowstyle='->')) # 添加注釋
for x0, y0 in zip(x, y):
plt.quiver(x0, y0 - 0.3, 0, 1, color='g', width=0.005) # 繪制箭頭
x = range(2, 21, 5)
y = np.log10(x) + 0.5
plt.plot(x, y, 'om') # 繪制紫紅色的圓形的點(diǎn)
x0, y0 = 7, np.log10(7) + 0.5
plt.annotate('Original point', xy=(x0, y0), xytext=(x0, y0 - 1), arrowprops=dict(arrowstyle='->'))
for x0, y0 in zip(x, y):
plt.quiver(x0, y0 + 0.3, 0, -1, color='g', width=0.005) # 繪制箭頭
# 設(shè)置坐標(biāo)范圍
plt.xlim(2, 21) # 設(shè)置x軸范圍
plt.xticks(range(0, 23, 2)) # 設(shè)置X軸坐標(biāo)點(diǎn)的值,為[0, 22]之間的以2為差值的等差數(shù)組
plt.ylim(0, 3) # 設(shè)置y軸范圍
# 顯示圖形
plt.show() # 顯示繪制出的圖
3. 解析
1)導(dǎo)入matplotlib模塊的pyplot類,這里主要用了pyplot里的一些方法。導(dǎo)入numpy用于生成一些數(shù)列。分別給pyplot和numpy記個(gè)簡(jiǎn)潔的別名plt和np,方便使用。
2)np.linspace(start, stop, num),可生成閉區(qū)間[stop, stop]里的數(shù)組長(zhǎng)度為num的等差數(shù)列。本例子中想作為插值點(diǎn)顯示出來(lái)。
3)plt.figure()用于添加窗口。如果把所有圖形繪制在一個(gè)窗口里,該句可以省略,因?yàn)閒igure(1)會(huì)被默認(rèn)創(chuàng)建。
如果想添加窗口,就再添加一句plt.figure(),plt.figure(num)的窗口序號(hào)num自動(dòng)自增。
4)plt.plot()向窗口里繪制曲線,傳遞x, y參數(shù),分別為橫軸和縱軸。
本例中所有圖形繪制在一個(gè)繪圖區(qū)域里。如果想添加2個(gè)繪圖區(qū)域呢?如下列代碼:
x = np.linspace(2, 21, 20) y1 = np.log10(x) + 0.5 y2 = np.log10(x) + 1 plt.subplot(211) plt.plot(x, y1) plt.subplot(212) plt.plot(x, y2) plt.show()
plt.subplot(rows, cols, figurenum)添加子繪圖區(qū)域,參數(shù)分別為:把窗口劃分為rows行cols列繪圖區(qū)域,figurenum表示第幾個(gè)繪圖區(qū)域。plt.subplot(211)=plt.subplot(2, 1, 1),繪圖區(qū)域數(shù)小于10時(shí)可省略逗號(hào)。創(chuàng)建的圖形為:

5) plt.plot(x, y, '.y') # 多寫該句為了顯示點(diǎn)和曲線的顏色不一樣。'.y'表示只把繪制曲線的點(diǎn)表示出來(lái),顏色為黃色。
6)plt.annotate(s, xy, xytext) # 添加注釋,除s、xy外其余還有若干可選參數(shù)。
s:注釋文本,
xy:指定要注釋的(x,y)坐標(biāo)點(diǎn),
xytext:可選,指定要放置文本的(x,y)坐標(biāo)點(diǎn)。如果沒(méi)有,則默認(rèn)為xy注釋點(diǎn)。
arrowprops:可選,字典形式,用于在xy坐標(biāo)和xytext間繪制一個(gè)指定形狀的箭頭,本例中指定一個(gè)'->'類型的箭頭,箭頭頭部寬和高為0.2/0.4。
7)plt.quiver(X, Y, U, V, C, **kw) # 繪制一個(gè)二維的箭頭,X, Y, C可以缺失。
X, Y:箭頭的位置,
U, V:表示箭頭的方向,
C:設(shè)置箭頭的顏色,
**kw里還有一系列參數(shù)可以設(shè)置,包括單位、箭頭角度、箭頭的頭部寬高設(shè)置等,這里設(shè)置了顏色color和箭頭的軸寬度width。
如果設(shè)置了C,再設(shè)置color將不生效。
有C為啥還有color可選設(shè)置呢?疑問(wèn)暫留,沒(méi)找到結(jié)果。
8)plt.xlim(min, max) / plt.ylim(min, max) 設(shè)置x軸/y軸的范圍。
9)plt.xticks() 設(shè)置x軸坐標(biāo)點(diǎn)的值。如果plt.xlim和plt.xticks設(shè)置的范圍不一致,怎么顯示?以最后設(shè)置的范圍為準(zhǔn)。
10)plt.show() # 最后調(diào)用此句,顯示出繪制的圖形。
以上這篇Python matplotlib繪制圖形實(shí)例(包括點(diǎn),曲線,注釋和箭頭)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python實(shí)現(xiàn)簡(jiǎn)單五子棋游戲
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)單五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06
一小時(shí)學(xué)會(huì)TensorFlow2之自定義層
這篇文章主要介紹了TensorFlow2之自定義層,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09
python實(shí)現(xiàn)ipsec開(kāi)權(quán)限實(shí)例
這篇文章主要介紹了python實(shí)現(xiàn)ipsec開(kāi)權(quán)限的方法,彌補(bǔ)了windows自帶的命令行工具netsh ipsec static add filter不支持批量添加及添加重復(fù)規(guī)則的不足,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-11-11
Python+Opencv實(shí)現(xiàn)圖像模板匹配詳解
模板匹配可以看作是對(duì)象檢測(cè)的一種非常基本的形式。使用模板匹配,我們可以使用包含要檢測(cè)對(duì)象的“模板”來(lái)檢測(cè)輸入圖像中的對(duì)象。本文為大家介紹了圖像模板匹配的實(shí)現(xiàn)方法,需要的可以參考一下2022-09-09
python實(shí)現(xiàn)人人對(duì)戰(zhàn)的五子棋游戲
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)人人對(duì)戰(zhàn)的五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
Python 十六進(jìn)制整數(shù)與ASCii編碼字符串相互轉(zhuǎn)換方法
今天小編就為大家分享一篇Python 十六進(jìn)制整數(shù)與ASCii編碼字符串相互轉(zhuǎn)換方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
Pytorch深度學(xué)習(xí)之實(shí)現(xiàn)病蟲(chóng)害圖像分類
PyTorch是一個(gè)開(kāi)源的Python機(jī)器學(xué)習(xí)庫(kù),基于Torch,用于自然語(yǔ)言處理等應(yīng)用程序。它具有強(qiáng)大的GPU加速的張量計(jì)算和自動(dòng)求導(dǎo)系統(tǒng)的深度神經(jīng)網(wǎng)絡(luò)。本文將介紹如何通過(guò)PyTorch實(shí)現(xiàn)病蟲(chóng)害圖像分類,感興趣的可以學(xué)習(xí)一下2021-12-12
python調(diào)用OpenCV實(shí)現(xiàn)人臉識(shí)別功能
這篇文章主要為大家詳細(xì)介紹了python調(diào)用OpenCV實(shí)現(xiàn)人臉識(shí)別功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
Python獲取當(dāng)前頁(yè)面內(nèi)所有鏈接的四種方法對(duì)比分析
這篇文章主要介紹了Python獲取當(dāng)前頁(yè)面內(nèi)所有鏈接的方法,結(jié)合實(shí)例形式對(duì)比分析了Python常用的四種獲取頁(yè)面鏈接的方法,并附帶了iframe框架內(nèi)鏈接的獲取方法,需要的朋友可以參考下2017-08-08

