pythonplt.subplot基礎與應用

一、圖形分區和布局

Python是一種強大的、易用的高級編程語言,自2003年發佈以來,一直都在廣泛的應用於數值計算、數據分析、科學計算、機器學習等相關領域。在Python的數據可視化中,Matplotlib是最為流行的數據繪圖庫之一。而其一個重要的功能就是plt.subplot實現的圖形分區和布局。

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0,10,100)
y = np.sin(x)

plt.subplot(2,2,1)
plt.plot(x,y)
plt.title('subplot(2,2,1)')

plt.subplot(2,2,2)
plt.plot(x,y)
plt.title('subplot(2,2,2)')

plt.subplot(2,2,3)
plt.plot(x,y)
plt.title('subplot(2,2,3)')

plt.subplot(2,2,4)
plt.plot(x,y)
plt.title('subplot(2,2,4)')

plt.show()

上述代碼中,plt.subplot函數調用的第一個參數表示分區行數,第二個參數表示分區列數,第三個參數表示當前子圖的索引編號。通過這個函數生成的圖形,會被平均分割成行數乘以列數份區域,並按照從左到右、從上到下的順序依次編號。關鍵的是,我們可以獨立對每個子圖進行設置,比如設置線條顏色、線條寬度、坐標軸標籤等等。此外,也可以在子圖上添加其它類型的圖形元素,比如標註文本、箭頭、網格線等。

二、繪製多個子圖

為了繪製多個子圖,我們可以使用plt.subplots函數。這個函數可以在一行中同時創建一個或多個子圖對象。如果需要創建多行子圖,可以使用先前提到的plt.subplot函數。

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-np.pi,np.pi,100)
y1 = np.sin(x)
y2 = np.cos(x)

fig, ax = plt.subplots(nrows=2, ncols=1)

ax[0].plot(x, y1, color='b', linewidth=2.5)
ax[0].set_title('sin(x)', fontsize=16)

ax[1].plot(x, y2, color='r', linewidth=2.5)
ax[1].set_title('cos(x)', fontsize=16)

plt.tight_layout()
plt.show()

上述代碼中,我們首先使用np.linspace函數生成一組-π到π的等分點,利用np.sin和np.cos函數生成對應的正弦和餘弦函數值。然後我們使用plt.subplots函數創建兩個子圖對象,分別表示plt.subplot函數內第一行和第二行。之後對於每個子圖對象,我們分別用ax數組存儲並單獨對其進行設置。也可以直接調用子圖對象屬性來設置子圖樣式,如標題、坐標軸標籤等。需要注意的是,在多個子圖對象內的元素設置仍然是基於單個Axes對象。如果需要對多個子圖對象進行相同設置,也可以使用類似plt.title、plt.xlabel等的plt.XXX風格函數。

三、繪製極坐標圖

極坐標圖是一種特殊的數據可視化,其中數據點顯示在平面內的極坐標系中。而plt.subplot函數同樣可以用於創建和顯示極坐標圖。

import matplotlib.pyplot as plt
import numpy as np

theta = np.linspace(0,2*np.pi,100)
r = np.sin(3*theta)

ax = plt.subplot(111, projection='polar')
ax.plot(theta, r)
ax.set_rmax(1)
ax.set_rticks([0.25, 0.5, 0.75, 1])
ax.grid(True)

plt.title("polar plot")
plt.show()

上述代碼中,我們首先定義theta和r數組,然後利用plt.subplot函數創建一個極坐標子圖對象。為了使得極坐標顯示更加美觀,我們設置了rmax表示最大距離、rticks表示圓周距離之間的間隔、grid表示圓形網格線等。注意,在使用plt.subplot函數創建極坐標子圖時,需要使用projection=’polar’設置投影方式為極坐標。

四、繪製3D圖

在某些情況下,我們需要繪製數據點的三維坐標情況,這時候就需要使用3D圖像。Matplotlib同樣支持3D圖繪製,也可以使用plt.subplot函數得到相應的3D子圖。

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

x = np.linspace(-5,5,100)
y = np.linspace(-5,5,100)
x,y = np.meshgrid(x,y)
r = np.sqrt(x**2+y**2)
z = np.sin(r)

ax.plot_surface(x, y, z, cmap='rainbow')
ax.set_zlim(-1,1)

plt.title("3D plot")
plt.show()

上述代碼中,我們使用np.meshgrid函數生成xy平面上的坐標點數組,計算出對應的r值和z值。然後使用plt.subplot函數創建一個3D子圖對象,設置其投影方式為實現3D圖像。對於3D圖像的製作,我們可以利用Axes3D對象並調用其plot_surface函數繪製空間曲面。需要注意的是,在繪製3D圖像時還有一些特殊的方法,比如zlim、xlim、ylim等參數可以用於設置z軸範圍和x、y平面範圍,其他的參數就和二維圖像繪製函數一致。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/245911.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:11
下一篇 2024-12-12 13:11

相關推薦

  • Python基礎代碼用法介紹

    本文將從多個方面對Python基礎代碼進行解析和詳細闡述,力求讓讀者深刻理解Python基礎代碼。通過本文的學習,相信大家對Python的學習和應用會更加輕鬆和高效。 一、變量和數…

    編程 2025-04-29
  • 數據結構與算法基礎青島大學PPT解析

    本文將從多個方面對數據結構與算法基礎青島大學PPT進行詳細的闡述,包括數據類型、集合類型、排序算法、字符串匹配和動態規劃等內容。通過對這些內容的解析,讀者可以更好地了解數據結構與算…

    編程 2025-04-29
  • Python零基礎PDF下載

    本文將為大家介紹如何使用Python下載PDF文件,適合初學者上手實踐。 一、安裝必要的庫 在Python中,我們需要使用urllib和requests庫來獲取PDF文件的鏈接,並…

    編程 2025-04-29
  • 樹莓派DIY無人機一:製作基礎

    本文將介紹如何使用樹莓派製作一個可飛行的小型無人機。本文將介紹樹莓派的選型、比例積木的使用、無線電通信以及如何控制飛行器的基本運動。 一、樹莓派的選型 在DIY無人機中,樹莓派是必…

    編程 2025-04-29
  • Polyphone音頻編輯器基礎入門教程

    Polyphone是一款免費的音頻編輯器,可用於編輯.sf2和.sfz格式的音色庫。本文將詳細介紹Polyphone的基礎操作及使用方法。 一、安裝和簡介 首先,我們需要下載並安裝…

    編程 2025-04-29
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Python基礎語言

    Python作為一種高級編程語言擁有簡潔優雅的語法。在本文中,我們將從多個方面探究Python基礎語言的特點以及使用技巧。 一、數據類型 Python基礎數據類型包括整數、浮點數、…

    編程 2025-04-28
  • 鍵值存儲(kvs):從基礎概念到實戰應用

    本文將從基礎概念入手,介紹鍵值存儲(kvs)的概念、原理以及實戰應用,並給出代碼實現。通過閱讀本文,您將了解鍵值存儲的優缺點,如何選擇最適合的鍵值存儲方案,以及如何使用鍵值存儲解決…

    編程 2025-04-28
  • Python基礎考點用法介紹

    Python作為一門腳本語言,其易學易用、開發快速的特點吸引了大量開發者。本文將從Python基礎考點出發,詳細闡述Python的特點、數據類型、運算符、流程控制、函數、模塊等方面…

    編程 2025-04-28
  • Python動態輸入: 從基礎使用到應用實例

    Python是一種高級編程語言,因其簡單易學和可讀性而備受歡迎。Python允許程序員通過標準輸入或命令行獲得用戶輸入,這使得Python語言無法預測或控制輸入。在本文中,我們將詳…

    編程 2025-04-28

發表回復

登錄後才能評論