Python數據可視化(二)

Patches繪制幾何圖形

模塊 patches 主要用來完成多邊形的繪制工作。這些多邊形都是以類(Class)的形式出現的, 主要包括圓(Circle)、橢圓(Ellipse)、矩形(Rectangle)、圓弧(Arc)、楔形(Wedge)等幾何圖形。 下面,我們就介紹這些幾何圖形的實現方法。

一,圓的實現方法

(1)代碼示例

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.patches import Circlefig, ax = plt.subplots(2, 2)# subplot(221)
circle = Circle((2, 2), radius=2, facecolor="white", edgecolor="cornflowerblue")
ax[0, 0].add_patch(circle)ax[0, 0].set_xlim(-1, 5)
ax[0, 0].set_ylim(-1, 5)# subplot(222)
rectangle = ax[0, 1].patch
rectangle.set_facecolor("gold")circle = Circle((2, 2), radius=2, facecolor="white", edgecolor="cornflowerblue")
ax[0, 1].add_patch(circle)ax[0, 1].set_xlim(-1, 5)
ax[0, 1].set_ylim(-1, 5)ax[0, 1].set_aspect("equal", "box")# subplot(223)
rectangle = ax[1, 0].patch
rectangle.set_facecolor("palegreen")circle = Circle((2, 2), radius=2, facecolor="white", edgecolor="cornflowerblue")
ax[1, 0].add_patch(circle)ax[1, 0].axis("equal")# subplot(224)
rectangle = ax[1, 1].patch
rectangle.set_facecolor("lightskyblue")circle = Circle((2, 2), radius=2, facecolor="white", edgecolor="cornflowerblue")
ax[1, 1].add_patch(circle)ax[1, 1].axis([-1, 5, -1, 5])
ax[1, 1].set_yticks(np.arange(-1, 6, 1))ax[1, 1].axis("equal")plt.subplots_adjust(left=0.1)plt.show()

?

(2)代碼講解

(1)以“Circle((2,2),radius=2,facecolor="white",edgecolor="cornflowerblue")”語句為例,講解類 Circle 的使用方法,具體參數和參數值的含義如下。

  • (2,2):圓的中心的坐標位置。
  • radius:圓的半徑大小。
  • facecolor:圓的填充顏色。
  • edgecolor:圓的輪廓的顏色。

(2)通過調用“Circle((2,2),radius=2,facecolor="white",edgecolor="cornflowerblue")”語句,生成 了子區 1 中圓心在(2,2)處、半徑為 2、填充顏色是白色和輪廓顏色是矢車菊藍的圓的實例。

(3)為了在子區 1 中展示實例 circle 的可視化效果,需要調用“ax[0,0].add_patch(circle)”語句。 也就是說,需要調用實例方法 add_patch()將實例 circle 以參數值形式添加到坐標軸實例 ax[0,0]中, 從而完成指定位置和指定半徑的圓的繪制工作。

(4)為了清楚地顯示繪制的圓的位置和半徑,調用實例方法 set_xlim()和 set_ylim(),調整 x 軸 和 y 軸的坐標軸的顯示范圍。 注意: 子區 1 中圓的形狀并不是圓,而是橢圓,是由于坐標軸的刻度線的變化量不一致導致的。

(5)為了解決圓的形狀不理想的問題,調用“ax[0,1].set_aspect("equal","box")”語句。這樣,我 們就實現了 x 軸和 y 軸的長度相同、刻度線的變化量相同的目標。 第 2 章 使用模塊 patches 繪制幾何圖形

(6)為了凸顯圓的形狀的理想情況,調用類 Rectangle 的實例方法 set_facecolor()分別設置子 區 2、子區 3 和子區 4 的坐標軸的背景色。

(7)在子區 2 中,可以看到在調用這些語句后產生的理想的圓的展示效果。

(8)在子區 3 中,不進行調整 x 軸和 y 軸的坐標軸的顯示范圍的操作,只是簡單地調用 “ax[1,0].axis("equal")”語句,將刻度線的變化量進行調整,使之保持相同的增量,從而產生理想的 圓的可視化效果。

(9)在子區 4 中,既通過調用“ax[1,1].axis([-1,5,-1,5])”語句調整了 x 軸和 y 軸的坐標軸的顯示 范圍和通過調用“ax[1,1].set_yticks(np.arange(-1,6,1))”語句調整了刻度線的位置,也通過調用 “ax[1,1].axis("equal")”語句調整了刻度線的變化量。

?

二,矩形的實現方法

矩形是數據可視化中一種比較常見的幾何圖形。在具體實踐中,我們通過類 Rectangle 生成矩形 實例,將矩形實例添加到坐標軸中,從而完成矩形的繪制任務。這種多邊形既可以充當坐標軸背景, 也可以作為組合圖形的一部分。

(1)代碼示例

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.patches import Rectanglefig, ax = plt.subplots(subplot_kw={"aspect": "equal"})x1 = np.arange(1, 2.6, 0.1)
y1 = x1 + 2x2 = np.arange(2.5, 4.1, 0.1)
y2 = -x2 + 7# set background color
rectangle = ax.patch
rectangle.set_facecolor("lightskyblue")# house
rectangle1 = Rectangle((1, 0), 3, 3, facecolor="w", edgecolor="rosybrown")# door
rectangle2 = Rectangle((1.5, 0), 1, 1.5, facecolor="w", edgecolor="rosybrown",hatch="|||")# window
rectangle3 = Rectangle((2.9, 1.7), 0.6, 0.6, facecolor="w", edgecolor="rosybrown")rectangle_list = [rectangle1, rectangle2, rectangle3]# roof line
ax.plot([1, 2.5, 4], [3, 4.5, 3], color="rosybrown")# window line
ax.plot([3.2, 3.2], [1.7, 2.3], color="rosybrown")
ax.plot([2.9, 3.5], [2.0, 2.0], color="rosybrown")# roof filled color
ax.fill_between(x1, 3, y1, color="w", interpolate=True)
ax.fill_between(x2, 3, y2, color="w", interpolate=True)for rect in rectangle_list:ax.add_patch(rect)ax.axis([0, 5, 0, 6])plt.show()

?

(2)代碼講解

<1>通過調用“ax.patch”語句,獲得類 Rectangle(xy=(0,0),width=1,height=1)的實例 rectangle。 <2>通過調用“rectangle.set_facecolor("lightskyblue")”語句,設置坐標軸實例 ax 的背景色。

<3>通過調用“Rectangle((1,0),3,3,facecolor="w",edgecolor="rosybrown")”語句,繪制第一個矩 形。這個矩形的左下角頂點的坐標是(1,0),矩形的寬度和高度都是 3,也是一個正方形。我們也設 置了矩形內部的填充顏色和輪廓的線條顏色。其他兩個矩形的繪制方法與第一個矩形的繪制方法完 全相同,只是矩形的左下角頂點的位置和矩形的形狀不同。 注意: 第二個矩形 rectangle2 還使用參數 hatch 增加了裝飾圖案“|”,使房子的門產生木質紋理的展示效果。

<4>使用“ax.plot([1,2.5,4],[3,4.5,3],color="rosybrown")”語句,設置屋頂的輪廓的線條顏色。?

<5>通過實例方法 plot()向第三個矩形中添加了窗戶的窗框。

<6>通過調用實例方法 fill_between()將屋頂的填充顏色設置為白色,與所有矩形內部的填充顏 色一致。 這樣,我們將繪制矩形的方法與前面講過的相關方法相結合,相對完整地繪制了一個簡易房屋。 需要補充的是,我們看到,使用 matplotlib 不僅可以完成繪制統計圖形的任務,還可以實現繪制圖畫的目標。

三,圓弧和楔形的實現方法

圓弧作為橢圓的一部分而被大量使用,楔形作為圓的一部分而得到廣泛應用。具體而言,圓弧 的實現方法是借助類 Arc 實現的,楔形是通過類 Wedge 進行繪制的。

(1)代碼示例

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.patches import Arc, Ellipse, Rectangle, Wedgefig, ax = plt.subplots(subplot_kw={"aspect": "equal"})# shadow
shadow = Ellipse((2.5, 0.5), 4.2, 0.5, color="silver", alpha=0.2)# base
ax.plot([1, 4], [1, 1.3], color="k")
base = Arc((2.5, 1.1), 3, 1, angle=10, theta1=0, theta2=180, color="k", alpha=0.8)# wheel
left_wheel = Ellipse((1, 1), 0.7, 0.4, angle=95, color="k")
right_wheel = Ellipse((4, 1.3), 0.7, 0.4, angle=85, color="k")# joinstyle
bottom_joinstyle1 = Ellipse((2.5, 2), 1, 0.3, facecolor="silver", edgecolor="w")
bottom_joinstyle2 = Ellipse((2.5, 1.7), 1, 0.3, facecolor="silver", edgecolor="w")
left_joinstyle = Ellipse((1, 5.75), 0.5, 0.25, angle=90, color="k")
left_arm_joinstyle1 = Wedge((0.3, 4.55), 0.1, 0, 360, color="k")
left_arm_joinstyle2 = Wedge((0, 4.0), 0.2, 290, 250, color="k")
right_joinstyle = Ellipse((4, 5.75), 0.5, 0.25, angle=90, color="k")
right_arm_joinstyle1 = Wedge((4.3, 6.95), 0.1, 0, 360, color="k")
right_arm_joinstyle2 = Wedge((4.3, 7.45), 0.2, 110, 70, color="k")
top_joinstyle1 = Ellipse((2.5, 6.2), 0.5, 0.2, facecolor="silver", edgecolor="w")
top_joinstyle2 = Ellipse((2.5, 6.3), 0.5, 0.2, facecolor="silver", edgecolor="w")# body
body = Rectangle((1, 2.1), 3, 4, color="steelblue")# arms
left_arm1 = ax.plot([0.3, 1 - 0.125], [4.55, 5.75], color="silver", lw=4)
left_arm2 = ax.plot([0, 0.3], [4.2, 4.55], color="silver", lw=4)
right_arm1 = ax.plot([4 + 0.125, 4.3], [5.75, 6.95], color="silver", lw=4)
right_arm2 = ax.plot([4.3, 4.3], [6.95, 7.25], color="silver", lw=4)# head
ax.plot([1, 4], [6.4, 6.4], color="steelblue")
head = Arc((2.5, 6.4), 3, 2.5, angle=0, theta1=0, theta2=180, color="steelblue")# eyes
left_eye = Wedge((2, 7), 0.4, 0, 360, color="gold")
left_eye_center = Wedge((2, 7), 0.3, 15, 345, color="k")
right_eye = Wedge((3, 7), 0.4, 0, 360, color="k")
right_eye_center = Wedge((3, 7), 0.3, 165, 195, color="darkred")polygon = [shadow,base,left_wheel,right_wheel,bottom_joinstyle1,bottom_joinstyle2,left_joinstyle,left_arm_joinstyle1,left_arm_joinstyle2,right_joinstyle,right_arm_joinstyle1,right_arm_joinstyle2,top_joinstyle1,top_joinstyle2,body,head,left_eye,left_eye_center,right_eye,right_eye_center]
for pln in polygon:ax.add_patch(pln)ax.axis([-1, 6, 0, 10])plt.show()

?

(2)代碼講解

<1>我們講解“Arc((2.5,1.1),3,1,angle=10,theta1=0,theta2=180,color="k",alpha=0.8)”語句,這條 語句用來繪制機器人底部車輪的連接弧線,具體參數和參數值的含義如下。

  • ?(2.5,1.1):圓弧的中心位置的坐標。
  • ?3:圓弧的寬度。
  • ?1:圓弧的高度。
  • ?angle:圓弧的逆時針旋轉的角度。
  • ?theta1:圓弧起點處的角度。
  • ?theta2:圓弧終點處的角度。
  • ?color:圓弧的顏色。
  • ?alpha:圓弧的透明度。

<2>我們講解“Wedge((2,7),0.3,15,345,color="k")”語句,這條語句用來繪制機器人左眼的黑色 楔形,具體參數和參數值的含義如下。

  • (2,7):楔形的中心位置的坐標。
  • 0.3:楔形的半徑。
  • 15:楔形起始位置的角度(逆時針方向旋轉)。
  • 345:楔形終止位置的角度(逆時針方向旋轉)。
  • color:楔形的填充區域顏色。

<3>通過上面的兩條典型語句,我們可以理解圓弧是橢圓沒有內部填充顏色時的一部分,楔形 是特殊形式的圓形。通過調用“Wedge((2,7),0.4,0,360,color="gold")”語句,就可以完成繪制圓心位 置確定和半徑大小確定的圓形的任務。

<4>在“代碼實現”部分里涉及的其他幾何圖形的繪制方法,我們已經在前面的內容中介紹過 了,這里就不再講解這些幾何圖形的繪制方法和操作細節。

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/15491.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/15491.shtml
英文地址,請注明出處:http://en.pswp.cn/web/15491.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SFTP命令用法(上傳和下載 )

sftp&#xff08;Secure File Transfer Protocol&#xff09;是SSH協議的一部分&#xff0c;用于在加密的SSH傳輸上訪問、管理和傳輸文件。與傳統的FTP協議相比&#xff0c;sftp提供了FTP的所有功能&#xff0c;但它更安全&#xff0c;更容易配置。不像SCP&#xff0c;它只支持…

【全開源】知識庫文檔系統源碼(ThinkPHP+FastAdmin)

知識庫文檔系統源碼&#xff1a;構建智慧知識庫的基石 引言 在當今信息爆炸的時代&#xff0c;知識的有效管理和利用對于企業和個人來說至關重要。知識庫文檔系統源碼正是為了滿足這一需求而誕生的&#xff0c;它提供了一個高效、便捷的平臺&#xff0c;幫助用戶構建、管理、…

設計模式之創建型模式---原型模式(ProtoType)

文章目錄 概述類圖原型模式優缺點優點缺點 代碼實現 概述 在有些系統中&#xff0c;往往會存在大量相同或者是相似的對象&#xff0c;比如一個圍棋或者象棋程序中的旗子&#xff0c;這些旗子外形都差不多&#xff0c;只是演示或者是上面刻的內容不一樣&#xff0c;若此時使用傳…

Oblivion Desktop:一款強大的網絡工具介紹

一款優秀的開源網絡工具。 文章目錄 Oblivion Desktop: 安全與隱私的網絡工具軟件背景開發背景 使用方法安裝日常使用高級功能 總結 Oblivion Desktop: 安全與隱私的網絡工具 軟件背景 Oblivion Desktop 是一個由 BePass 團隊開發的開源桌面應用&#xff0c;旨在為用戶提供更…

【Qt】Qt組件設置背景圖片

1. 方法1&#xff08;paintEvent方式&#xff09; 使用paintEvent()實現 1. .h文件中添加虛函數 protected:void paintEvent(QPaintEvent *event) override;添加虛函數方法&#xff1a; 選中父類&#xff0c;點擊鼠標右鍵點擊重構點擊 Insert Virtual Funtion of Base Class…

NebulaGraph

文章目錄 關于 NebulaGraph客戶端支持安裝 NebulaGraph關于 nGQLnGQL 可以做什么2500 條 nGQL 示例原生 nGQL 和 openCypher 的關系 Backup&Restore功能 導入導出導入工具導出工具 NebulaGraph ImporterNebulaGraph ExchangeNebulaGraph Spark ConnectorNebulaGraph Flink …

python中的可哈希和不可哈希

python 中的每一個對象都有一個哈希值&#xff0c;哈希值是一個固定長度的整數&#xff0c;它通常用于快速比較對象的相等性。 如果在對象的生命周期里該對象的哈希值從未改變&#xff0c;那么這個對象是可哈希的&#xff08;hashable&#xff09;&#xff0c;也稱為不可變的。…

第一篇【傳奇開心果系列】Python的跨平臺開發工具beeware技術點案例示例:使用beeware實現跨平臺開發,從hello world開始

傳奇開心果博文系列 系列博文目錄Python的跨平臺開發工具beeware技術點案例示例系列 博文目錄前言一、BeeWare套件主要功能介紹二、Toga相對于其他Python UI庫具有的優勢介紹三、使用toga開發安卓手機應用hello world步驟和示例代碼四、使用toga寫一個iOS 蘋果手機應用hello wo…

【文末附gpt升級方案】亞馬遜與Hugging Face合作:定制芯片低成本運行AI模型的創新探索

亞馬遜與Hugging Face合作&#xff1a;定制芯片低成本運行AI模型的創新探索 摘要 本文探討了亞馬遜云部門與人工智能初創公司Hugging Face的合作&#xff0c;旨在通過定制計算芯片Inferentia2在亞馬遜網絡服務&#xff08;AWS&#xff09;上更低成本地運行數千個AI模型。文章首…

web前端之vue的生命周期、unmounted、onUnmounted、activated、deactivated、keep-alive

MENU 前言vue2vue3activated和deactivated 前言 在Vue.js中&#xff0c;組件生命周期鉤子函數定義了在組件的不同階段執行的操作。Vue 2.x和Vue 3.x之間的生命周期鉤子函數有一些區別。 vue2 1、beforeCreate: 在實例初始化之后&#xff0c;數據觀測(data observer)和event/wat…

RDD介紹

RDD設計背景 在實際應用中,存在許多迭代式計算,這些應用場景的共同之處是 : 不同計算階段之間會重用中間結果,即一個階段的輸出結果會作為下一個階段的輸入. 而目前的MapReduce框架都是把中間結果寫入到HDFS中,帶來了大量的數據復制、磁盤IO和序列化開銷; 如果能將結果保存在內…

為何程序員35歲就開始被嫌棄了?程序員該如何避免中年危機?

文章目錄 一、為何程序員35歲就開始被嫌棄了&#xff1f;1、技術更新迅速2、職業發展瓶頸3、成本考慮4、年齡歧視5、市場供需變化6、個人因素 二、程序員該如何避免中年危機&#xff1f;1、持續學習與技能更新2、拓展技術廣度與深度3、提升軟技能4、關注行業趨勢與市場變化5、建…

vue3 input輸入框輸入限制(數字)

輸入框限制輸入的內容格式&#xff0c;如&#xff08;金額&#xff0c;數字&#xff09; 金額限制小數點后2位數 <el-input placeholder"請填寫費用" v-model"formMoney.total_money" keyup"formMoney.total_money checkPrice(formMoney.total_…

20240521(代碼整潔和測試入門學習)

測試: 1.測試工程師、測試工具開發工程師、自動化測試工程師。 python&#xff1a; 1、發展背景和優勢&#xff1b; 2、開始多需的工具 interpreter(解釋器) refactor(重構) 2、變量和注釋的基礎語法 3、輸入輸出 i 1 for i in range(1, 11): print(i, end ) 不換行打印…

jupyter notebook 實現聯邦學習模型

聯邦學習(Federated Learning)是一種機器學習框架,它允許多個參與方(例如,移動設備或服務器)在本地數據集上訓練模型,而無需將數據集中到一個位置。這有助于保護數據隱私,并允許在分布式環境中進行模型訓練。 要在Jupyter Notebook中實現聯邦學習模型,你可以遵循以下…

性能大爆炸!為你的Matomo換一個高性能的環境!

隨著我的 Matomo 越來越大&#xff0c;功能需求的增多&#xff0c;插件也變得越來越多&#xff0c;使用傳統的LNMP架構或者LAMP架構都會發現性能正在急劇下級&#xff0c;為此&#xff0c;我們發現了使用FrankenPHP&#xff08;以下簡稱FPHP&#xff09;的方案 首先&#xff0…

Android kotlin協程

說明 可代替線程整異步可控制&#xff0c;靈活 &#xff08;控制優先級&#xff0c;內存占用等&#xff09;速度快 效率高有數量上限 使用 runBlocking 一般用于測試 不建議使用GlobalScope.launch 全局的 生命周期跟隨application 不建議使用CoroutineScope(job) 用 基本使…

櫻花下落的速度是每秒5厘米,我們的心又該以什么速度去接近呢

櫻花下落的速度是每秒五厘米。5年前第一次接觸秒速五厘米的時候&#xff0c;我還在念初中&#xff0c;那時候的我尚且理解不了作品里的太多東西&#xff0c;只是為那輛列車隔開了明里和貴樹感到悲傷&#xff0c;為他們二人那段無疾而終的感情感到遺憾。五年后再一次重溫&#x…

GEE批量導出逐日、逐月、逐季節和逐年的遙感影像(以NDVI為例)

影像導出 1.逐日數據導出2.逐月數據導出3.季節數據導出4.逐年數據導出 最近很多小伙伴們私信我&#xff0c;問我如何高效導出遙感數據&#xff0c;從逐日到逐季度&#xff0c;我都有一套自己的方法&#xff0c;今天就來和大家分享一下&#xff01; ??&#x1f50d;【逐日導出…

Scala 入門介紹和環境搭建

一、簡介 Scala 是一門以 Java 虛擬機&#xff08;JVM&#xff09;為運行環境并將面向對象和函數式編程的最佳特性結合在一起的靜態類型編程語言 (靜態語言需要提前編譯&#xff0c;如&#xff1a;Java、c、c 等&#xff0c;動態語言如&#xff1a;js)Scala 是一門多范式的編程…