一、概述
subplot()是Matplotlib庫中一個十分實用的函數,它允許用戶在單個圖中排布出多個子圖,從而可以顯示多個數據可視化結果或者多種可視化效果。subplot()的優點在於相對簡單的調用方式和靈活的定製能力,許多常見的排布方式都可以通過輕鬆地調整行列參數完成。同時,用戶還可以通過subplot()的一些參數調整子圖之間的間距、圖內的邊距、標題和坐標軸等細節。
二、基礎使用
subplot()函數有三個必選參數,分別表示整個圖的行數、列數以及指定的子圖編號。其中行數、列數確定了整個圖的排布方式,而子圖編號則用來定位當前子圖的位置。具體來說,如果圖的行數為m,列數為n,指定的子圖編號為k,則subplot()函數作用後,當前圖的子圖編號將會變為$(k-1)\times n+m$。下面我們展示一個簡單的subplot()調用示例:
import matplotlib.pyplot as plt import numpy as np x = np.linspace(0, 2*np.pi, 400) y = np.sin(x**2) plt.subplot(2, 1, 1) plt.plot(x, y) plt.title('Subplot example') plt.subplot(2, 1, 2) plt.plot(x, -y)
這個例子中,我們將整個圖分為兩行一列,當前子圖的編號為1,即在整個圖的第一行繪製了sin曲線的圖像,並加上了一個標題;之後,我們將當前子圖的編號設置為2,即在整個圖的第二行繪製了-sin曲線的圖像。
三、高級定製
1. 調整間距和比例
subplot()函數支持通過調整subplot_kw參數來對子圖進行定製,其中包括figsize參數控制整個圖的大小,wspace和hspace參數控制子圖間的水平與垂直間距,以及gridspec_kw參數控制子圖的比例。
fig, axs = plt.subplots(2, 2, figsize=(8, 8), gridspec_kw={'width_ratios': [1, 2], 'height_ratios': [2, 1]}) axs[0, 0].plot([1, 2, 3, 4, 5]) axs[1, 1].scatter([1, 2, 3, 4], [2, 4, 6, 8]) plt.subplots_adjust(wspace=0.4, hspace=0.3)
在這個示例中,我們定義了一個2行2列的圖,指定了整個圖的大小為8×8,同時通過gridspec_kw參數指定了第一列和第二行的子圖寬度與高度比都為2,第二列和第一行的子圖寬度與高度比都為1。最後,我們通過subplots_adjust()函數調整了子圖之間的距離,使得圖像更加美觀。
2. 設置標題和坐標軸標籤
subplot()函數支持添加標題和坐標軸標籤,對圖像增加了更為豐富的信息。直接使用Matplotlib庫提供的plt.title()、plt.xlabel()和plt.ylabel()函數即可完成這些操作。
fig, axs = plt.subplots(2, 1, figsize=(6, 6)) x = np.linspace(0, 2*np.pi, 400) y = np.sin(x**2) axs[0].plot(x, y) axs[0].set_title('Sin plot') axs[0].set_xlabel('x') axs[0].set_ylabel('y') axs[1].plot(x, np.cos(x**2)) axs[1].set_title('Cos plot') axs[1].set_xlabel('x') axs[1].set_ylabel('y')
3. 繪製不同類型的子圖
subplot()函數並不局限於繪製相同類型和參數的子圖,它還支持用戶自由控制每一個子圖的類型、參數等。下面,我們展示了一個將三張不同子圖繪製在同一張畫板上的示例,包括折線圖、散點圖以及條形圖:
fig, axs = plt.subplots(1, 3, figsize=(10, 5)) x = np.linspace(0, 2*np.pi, 400) y = np.sin(x**2) axs[0].plot(x, y) axs[0].set_title('Sin plot') axs[1].scatter([1, 2, 3, 4], [2, 4, 6, 8]) axs[1].set_title('Scatter plot') axs[2].bar(['A', 'B', 'C'], [3, 2, 5]) axs[2].set_title('Bar plot')
四、結語
在本文中,我們細緻地闡述了Matplotlib庫中subplot()函數的基礎用法和高級技巧,包括如何調整子圖之間的距離、設置標題和坐標軸標籤、繪製不同類型的子圖等。通過這些闡述,相信讀者可以更加靈活自由地掌控subplot()函數,方便地進行各種類型的數據可視化。除了subplot()函數,Matplotlib庫還有許多強大的可視化函數和工具,讀者可以進一步深入學習並應用到實際工作中去。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/247655.html