深入淺出matplotlib — plt.figure()詳解

一、基本介紹

plt.figure()是matplotlib.pyplot中的一種功能強大的函數,常被用來創建新的繪圖窗口及其所對應的繪圖對象。它是一個最基礎的創建圖像對象的函數,所有其他的圖像繪製函數都需要先創建一個Figure對象再進行操作。它提供了多種參數來控制圖像的大小、分辨率、背景顏色、透明度等,能夠滿足用戶的多樣化需求。

二、參數介紹

plt.figure()函數提供了多個參數,主要包括:

1. num: 整數或字符串類型,用於指定圖表窗口編號或名稱。默認為None,表示創建一個新的圖表窗口。

2. figsize: 元組類型,指定圖表窗口大小,單位為英寸。默認為(6.4, 4.8)

3. dpi: 整數類型,指定繪圖對象的分辨率,即每英寸點數。默認為100

4. facecolor: 字符串類型,指定繪圖對象的背景顏色。默認為’w’

5. edgecolor: 字符串類型,指定繪圖對象的邊框顏色。默認為’w’

6. frameon: 布爾類型,表示是否顯示繪圖對象的邊框。默認為True

7. clear: 布爾類型,表示是否在創建新的繪圖窗口前清除之前的圖像。默認為False

三、示例代碼

import matplotlib.pyplot as plt

# 1. 創建一個新的繪圖窗口,編號為1,大小為(8, 6),分辨率為100,背景顏色為'g',邊框為黑色,且邊框寬度為2
fig1 = plt.figure(num=1, figsize=(8, 6), dpi=100, facecolor='g', edgecolor='k', frameon=True)

# 2. 創建一個新的繪圖窗口,編號為2,大小為(10, 8),分辨率為100,背景顏色為'w',邊框為白色,且邊框不顯示
fig2 = plt.figure(num='test', figsize=(10, 8), dpi=100, facecolor='w', edgecolor='w', frameon=False)

# 3. 創建一個新的繪圖窗口,編號為3,大小為(6, 4),分辨率為100,背景顏色為'w',邊框為白色,且邊框寬度為1
fig3 = plt.figure(num=3, figsize=(6, 4), dpi=100, facecolor='w', edgecolor='w', frameon=True)
fig3.patch.set_linewidth(1)

# 4. 在創建新的繪圖窗口前清空之前的圖像,並設置新的背景顏色
plt.clf()
fig4 = plt.figure(num=4, figsize=(5, 3), dpi=100, facecolor='b', edgecolor='w', frameon=True)

四、應用實例

plt.figure()函數的應用非常廣泛,下面將介紹幾個比較常見的實例。

1. 繪製多張子圖

一般情況下我們需要在一張圖中展示多幅子圖,這時我們可以通過先創建一張大圖,然後在它的基礎上繪製多個子圖。

import matplotlib.pyplot as plt

fig = plt.figure(num=1, figsize=(8, 6), dpi=100)
# 創建子圖1
ax1 = fig.add_subplot(221)
ax1.plot([1,2,3,4],[2,4,6,8])
# 創建子圖2
ax2 = fig.add_subplot(222)
ax2.plot([1,2,3,4],[1,3,5,7])
# 創建子圖3
ax3 = fig.add_subplot(223)
ax3.plot([1,2,3,4],[2,5,7,8])
# 創建子圖4
ax4 = fig.add_subplot(224)
ax4.plot([1,2,3,4],[1,3,5,6])

plt.show()

2. 繪製極軸圖

極軸圖是一種特殊的圖形類型,它是將圖像放在一個圓形坐標繫上展示,用於繪製徑向分布圖等。我們可以通過 plt.subplot() 函數創建極軸子圖,通過 figsize 參數指定整張圖的大小。

import numpy as np
import matplotlib.pyplot as plt

# 繪製極軸圖
r = np.arange(0, 1, 0.001)
theta = 2 * np.pi * r

fig = plt.figure(figsize=(6, 6), dpi=100)
ax = fig.add_subplot(111, projection='polar')
ax.plot(theta, r, color='r', linewidth=3)

plt.show()

3. 繪製3D圖

plt.figure()函數還可以用來創建3D圖像對象。我們可以通過 axes 參數指定所需的子圖數量和布局,並可通過 figsize 參數調整整張圖像的大小。

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

# 繪製3D圖
fig = plt.figure(figsize=(8, 8), dpi=100)
ax = fig.add_subplot(111, projection='3d')

x = np.arange(-5, 5, 0.1)
y = np.arange(-5, 5, 0.1)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))

ax.plot_surface(X, Y, Z, cmap='rainbow')

4. 繪製帶有圖例和標題的圖表

我們可以通過使用 plt.legend() 和 plt.title() 函數來在圖表中添加圖例和標題等元素,使圖表更加完整。

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 6 * np.pi, 0.1)
y1 = np.sin(x)
y2 = np.cos(x)
fig = plt.figure(figsize=(8, 6), dpi=100)
plt.plot(x, y1, label='sin')
plt.plot(x, y2, label='cos')
plt.legend(loc='upper right')
plt.title('Trigonometric Function')
plt.xlabel('x')
plt.ylabel('y')

五、小結

通過本文的介紹,我們了解了 plt.figure() 函數的基本概念和用法,其參數的作用及如何創建多幅子圖、極軸圖、3D圖和帶有圖例和標題的圖表等。希望本文能對讀者在日常使用matplotlib時有所幫助。

原創文章,作者:UTSUQ,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/371628.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
UTSUQ的頭像UTSUQ
上一篇 2025-04-23 18:08
下一篇 2025-04-23 18:08

相關推薦

  • Python最強大的製圖庫——Matplotlib

    Matplotlib是Python中最強大的數據可視化工具之一,它提供了海量的製圖、繪圖、繪製動畫的功能,通過它可以輕鬆地展示數據的分布、比較和趨勢。下面將從多個方面對Matplo…

    編程 2025-04-29
  • Python三大:NumPy、Pandas、matplotlib

    本文將詳細介紹三大Python數據處理及可視化庫——NumPy、Pandas以及matplotlib,為讀者提供從基礎使用到應用場景的全面掌握。 一、NumPy NumPy是Pyt…

    編程 2025-04-27
  • Python畫圖:Matplotlib的使用

    Matplotlib是Python中最常用的畫圖庫之一。它可以輕鬆地創建各種類型的圖表,包括直方圖、散點圖、線圖、餅圖等等。本文將從以下幾個方面對Matplotlib的使用進行詳細…

    編程 2025-04-27
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁盤中。在執行sync之前,所有的文件系統更新將不會立即寫入磁盤,而是先緩存在內存…

    編程 2025-04-25
  • 神經網絡代碼詳解

    神經網絡作為一種人工智能技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網絡的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網絡模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • MPU6050工作原理詳解

    一、什麼是MPU6050 MPU6050是一種六軸慣性傳感器,能夠同時測量加速度和角速度。它由三個傳感器組成:一個三軸加速度計和一個三軸陀螺儀。這個組合提供了非常精細的姿態解算,其…

    編程 2025-04-25
  • Python安裝OS庫詳解

    一、OS簡介 OS庫是Python標準庫的一部分,它提供了跨平台的操作系統功能,使得Python可以進行文件操作、進程管理、環境變量讀取等系統級操作。 OS庫中包含了大量的文件和目…

    編程 2025-04-25
  • Java BigDecimal 精度詳解

    一、基礎概念 Java BigDecimal 是一個用於高精度計算的類。普通的 double 或 float 類型只能精確表示有限的數字,而對於需要高精度計算的場景,BigDeci…

    編程 2025-04-25
  • Linux修改文件名命令詳解

    在Linux系統中,修改文件名是一個很常見的操作。Linux提供了多種方式來修改文件名,這篇文章將介紹Linux修改文件名的詳細操作。 一、mv命令 mv命令是Linux下的常用命…

    編程 2025-04-25
  • git config user.name的詳解

    一、為什麼要使用git config user.name? git是一個非常流行的分布式版本控制系統,很多程序員都會用到它。在使用git commit提交代碼時,需要記錄commi…

    編程 2025-04-25

發表回復

登錄後才能評論