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

Matplotlib繪圖基礎(chǔ)之幾何圖形的繪制詳解

 更新時間:2023年08月09日 09:11:16   作者:databook  
除了繪制各類分析圖形(比如柱狀圖,折線圖,餅圖等等)以外,matplotlib?也可以在畫布上任意繪制各類幾何圖形,下面小編就來和大家講講如何繪制常見的幾種幾何圖形吧

除了繪制各類分析圖形(比如柱狀圖,折線圖,餅圖等等)以外,matplotlib 也可以在畫布上任意繪制各類幾何圖形。

這對于計算機圖形學(xué)、幾何算法和計算機輔助設(shè)計等領(lǐng)域非常重要。

matplitlib 中的 patches 類提供了豐富的幾何對象,

本篇拋磚引玉,介紹其中幾種常用的幾何圖形繪制方法。

其實matplitlib封裝的各種現(xiàn)成的圖形對象(柱狀圖,折線圖,餅圖等等)本質(zhì)也是基于 patches 來繪制的。

1. 多邊形類

多邊形可以用在地理信息圖表中,用來表示地理區(qū)域的邊界或地理要素的形狀;

也可以用來展示數(shù)據(jù)的分布區(qū)域或邊界,比如用在散點圖中。

幾種常用的多邊形繪制方式如下:

1.1. 矩形

繪制矩形用Rectangle對象。

import matplotlib.pyplot as plt
import matplotlib.patches as mptch
fig = plt.figure(figsize=[6, 6])
ax = fig.add_subplot(111)
r1 = mptch.Rectangle(xy=(0.2, 0.3), 
                     height=0.5,
                     width=0.7,
                     color="lightblue")
r2 = mptch.Rectangle(xy=(0.4, 0.6),
                     height=0.3,
                     width=0.2,
                     angle=60,
                     color="lightgreen")
ax.add_patch(r1)
ax.add_patch(r2)
plt.show()

Rectangle對象的主要參數(shù)

  • xy:矩形的起始點,也就是左下角的點
  • height:矩形的高
  • width:矩形的寬,高和寬設(shè)置一樣就是正方形
  • angle:沿著起始點,逆時針旋轉(zhuǎn)的角度
  • color:矩形的顏色,默認藍色

代碼運行效果

1.2. 任意多邊形

任意多邊形比較簡單,給Polygon對象傳入多邊形的各個頂點即可。

fig = plt.figure(figsize=[6, 6])
ax = fig.add_subplot(111)
#三角形
p1 = mptch.Polygon(xy=[(0.1, 0.1), (0.4, 0.1), (0.3, 0.6)], 
                   color='lightblue')
#四邊形
p2 = mptch.Polygon(xy=[(0.5, 0.5), (0.9, 0.5),  (0.9, 0.1), (0.6, 0.2)], 
                   color='lightgreen')
ax.add_patch(p1)
ax.add_patch(p2)
plt.show()

Polygon對象的主要參數(shù)

  • xy:多邊形各個頂點的列表
  • color:多邊形的顏色,默認藍色

代碼運行效果

1.3. 正多邊形

雖然用Polygon對象也可以繪制正多邊形,但是需要計算各個頂點的坐標位置,很麻煩。

matplotlib提供了專門繪制正多邊形的對象CirclePolygon。

fig = plt.figure(figsize=[6, 6])
ax = fig.add_subplot(111)
p1 = mptch.CirclePolygon(xy=(0.3, 0.3), 
                         radius=0.2, 
                         resolution=6, 
                         color='lightgreen')
p2 = mptch.CirclePolygon(xy=(0.6, 0.6), 
                         radius=0.2, 
                         resolution=8, 
                         color='lightblue')
ax.add_patch(p1)
ax.add_patch(p2)
plt.show()

CirclePolygon對象的主要參數(shù)

  • xy:正多邊形的中心點坐標
  • radius:正多邊形的外接圓半徑
  • resolution:正多邊形的邊數(shù)
  • color:正多邊形的顏色,默認藍色

代碼運行效果

2. 圓形類

圓形類也是使用比較多的形狀。

2.1. 圓和橢圓

繪制圓和橢圓分別用CircleEllipse對象。

fig = plt.figure(figsize=[6, 6])
ax = fig.add_subplot(111)
c = mptch.Circle(xy=(0.5, 0.5), 
                 radius=0.4, 
                 color="lightblue")
e = mptch.Ellipse(xy=(0.5, 0.5), 
                  height=0.3, 
                  width=0.4, 
                  color="lightgreen")
ax.add_patch(c)
ax.add_patch(e)
plt.show()

Circle對象的主要參數(shù)

  • xy:圓心坐標
  • radius:圓的半徑
  • color:圓的顏色,默認藍色

Ellipse對象的主要參數(shù)

  • xy:橢圓心坐標
  • height:橢圓的高度
  • width:橢圓的寬度
  • color:橢圓的顏色,默認藍色

**PS. **當橢圓的heightwidth設(shè)置一樣時,橢圓就是圓了。

代碼運行效果

3. 圓弧和扇形

除了完整的圓,也可以繪制弧形(Arc對象)和扇形(Wedge對象)。

fig = plt.figure(figsize=[6, 6])
ax = fig.add_subplot(111)
#圓弧
a = mptch.Arc(xy=(0.4, 0.7), 
              width=0.5, height=0.5, 
              angle=270, 
              theta1=0, theta2=120, 
              linewidth=10, 
              color="lightblue")
#扇形
w = mptch.Wedge(center=(0.3, 0.5), 
                r=0.2, 
                theta1=30, theta2=330, 
                color="lightgreen")
ax.add_patch(a)
ax.add_patch(w)
plt.show()

Arc對象的主要參數(shù)

  • xy:圓弧的圓心坐標
  • width:圓弧的寬度
  • height:圓弧的高度
  • angle:圓弧朝向的角度,逆時針旋轉(zhuǎn)
  • theta1:圓弧開始的角度,逆時針旋轉(zhuǎn)
  • theta2:圓弧結(jié)束的角度,逆時針旋轉(zhuǎn)
  • linewidth:圓弧的粗細
  • color:圓弧的顏色,默認藍色

PS. widthheight相等時,圓弧相當于是的一段,不相等時,圓弧相當于是橢圓的一段。

圓弧開始的角度其實就是 angle+theta1,結(jié)束的角度是angle+theta2。

Wedge對象的主要參數(shù)

  • xy:扇形的圓心坐標
  • r:扇形的半徑
  • theta1:扇形開始的角度,逆時針旋轉(zhuǎn)
  • theta2:扇形結(jié)束的角度,逆時針旋轉(zhuǎn)
  • color:扇形的顏色,默認藍色

代碼運行效果:(本來想畫個魚鉤釣魚的抽象效果的,:))

4. 箭頭

箭頭也是一種比較常用的圖形,可用來標注和指示數(shù)據(jù)的方向或關(guān)聯(lián)性,比如增長或下降趨勢;

還可以用來表示數(shù)據(jù)流向或關(guān)系。

matplotlib中用Arrow對象來繪制箭頭。

fig = plt.figure(figsize=[6, 6])
ax = fig.add_subplot(111)
x, y, dx, dy  = 0.1, 0.2, 0.2, 0.2
a1 = mptch.Arrow(x=x, y=y, 
                 dx=dx, dy=dy, 
                 width=0.2, color="lightblue")
a2 = mptch.Arrow(x=x+dx, y=y+dy, 
                 dx=dx, dy=dy, 
                 width=0.4, color="lightgreen")
ax.add_patch(a1)
ax.add_patch(a2)
plt.show()

Arrow對象的主要參數(shù)

  • x:箭頭的起點X坐標
  • y:箭頭的起點Y坐標
  • dx:箭頭的終點X坐標偏移起點X坐標的值
  • dy:箭頭的終點Y坐標偏移起點Y坐標的值
  • width:箭頭的寬度
  • color:箭頭的顏色,默認藍色

PS. 其實就是起點坐標(x, y),終點坐標(x+dx, y+dy)。

代碼運行效果

5. 總結(jié)

幾何圖形是matplotlib最基本的能力,復(fù)雜花哨的分析圖表歸根結(jié)底都是這些基本的幾何圖形。

除了本篇介紹的這些,完整的patches可以參考官方文檔:https://matplotlib.org/stable/api/patches_api.html

以上就是Matplotlib繪圖基礎(chǔ)之幾何圖形的繪制詳解的詳細內(nèi)容,更多關(guān)于Matplotlib圖形的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python如何根據(jù)字幕文件自動給視頻添加字幕效果

    Python如何根據(jù)字幕文件自動給視頻添加字幕效果

    視頻中字幕的重要性不用多說了,下面這篇文章主要給大家介紹了關(guān)于Python如何根據(jù)字幕文件自動給視頻添加字幕效果的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-02-02
  • TensorFlow和Numpy矩陣操作中axis理解及axis=-1的解釋

    TensorFlow和Numpy矩陣操作中axis理解及axis=-1的解釋

    在調(diào)用numpy庫中的concatenate()時,有遇到axis=-1/1/0的情況,下面這篇文章主要給大家介紹了關(guān)于TensorFlow和Numpy矩陣操作中axis理解及axis=-1解釋的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-03-03
  • Pyqt助手安裝PyQt5幫助文檔過程圖解

    Pyqt助手安裝PyQt5幫助文檔過程圖解

    這篇文章主要介紹了Pyqt助手安裝PyQt5幫助文檔過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • python從網(wǎng)絡(luò)讀取圖片并直接進行處理的方法

    python從網(wǎng)絡(luò)讀取圖片并直接進行處理的方法

    這篇文章主要介紹了python從網(wǎng)絡(luò)讀取圖片并直接進行處理的方法,涉及cStringIO模塊模擬本地文件的使用技巧,需要的朋友可以參考下
    2015-05-05
  • Python 中的 else詳解

    Python 中的 else詳解

    這篇文章主要介紹了Python 中的 else詳解的相關(guān)資料,需要的朋友可以參考下
    2016-04-04
  • django實現(xiàn)圖片上傳數(shù)據(jù)庫并顯示

    django實現(xiàn)圖片上傳數(shù)據(jù)庫并顯示

    這篇文章主要為大家詳細介紹了django實現(xiàn)圖片上傳數(shù)據(jù)庫并顯示,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • python第三方庫pygame的使用詳解

    python第三方庫pygame的使用詳解

    這篇文章主要介紹了python第三方庫pygame的使用,pygame一般用來做游戲,在這需要注意在使用pygame提供的功能之前,需要調(diào)用init方法,本文給大家介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • python?format格式化和數(shù)字格式化

    python?format格式化和數(shù)字格式化

    這篇文章主要介紹了python?format格式化和數(shù)字格式化,格式化字符串的函數(shù)?str.format(),它增強了字符串格式化的功能,基本語法是通過{}?和?:?來代替以前的?%?,下面內(nèi)容介紹,需要的朋友可以參考一下
    2022-02-02
  • pytorch中的named_parameters()和parameters()

    pytorch中的named_parameters()和parameters()

    這篇文章主要介紹了pytorch中的named_parameters()和parameters()使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 幾款好用的python工具庫(小結(jié))

    幾款好用的python工具庫(小結(jié))

    這篇文章主要介紹了幾款好用的python工具庫(小結(jié)),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10

最新評論