Delplott
Funksjonen subplots()
fra pyplot
har dette spesifikke formålet. Den ble tidligere brukt til å opprette et lerret i den første seksjonen, og nå skal vi se nærmere på den.
Rader og kolonner
De viktigste argumentene for denne funksjonen er nrows
og ncolumns
, som angir antall rader og kolonner i subplot-rutenettet. Som standard er begge satt til 1, slik at du får én enkelt plot (Axes
).
Funksjonen subplots()
returnerer et Figure
-objekt og enten ett Axes
-objekt eller et array av Axes
-objekter, avhengig av størrelsen på rutenettet.
import matplotlib.pyplot as plt fig, axs = plt.subplots(2, 2) plt.show()
Et 2 x 2 subplot-rutenett ble opprettet.
Siden det er flere underplott, returnerer subplots
et array av Axes
-objekter, vanligvis lagret i en variabel kalt axs
(entall ax
brukes for ett plott).
I dette tilfellet er axs
et todimensjonalt array, så du trenger både rad- og kolonneindeks for å få tilgang til et bestemt underplott.
import matplotlib.pyplot as plt import numpy as np data_linear = np.arange(1, 11) data_squared = data_linear ** 2 # Creating a 2x2 subplot grid fig, axs = plt.subplots(2, 2) # Creating a different plot for each Axes object axs[0, 0].plot(data_linear) axs[0, 1].plot(data_squared) axs[1, 0].scatter(data_linear, data_linear) axs[1, 1].scatter(data_linear, data_squared) plt.show()
Første rad (rad 0) har to linjediagrammer, og andre rad (rad 1) har to spredningsdiagrammer.
Siden hvert diagram plasseres på en egen subplot, kan ikke plt.plot()
eller plt.scatter()
brukes direkte. Riktig tilnærming er å kalle den tilsvarende metoden på hvert enkelt Axes
-objekt.
Konvertering til 1D-array
Det er også mulig å bruke .ravel()
-metoden for å konvertere en todimensjonal Axes
-array til et endimensjonalt sammenhengende flatt array:
import matplotlib.pyplot as plt import numpy as np data_linear = np.arange(1, 11) data_squared = data_linear ** 2 # Creating a 2x2 subplot grid fig, axs = plt.subplots(2, 2) # Flattening axs to a 1D array for easier indexing axs = axs.ravel() # Creating a different plot for each Axes object axs[0].plot(data_linear) axs[1].plot(data_squared) axs[2].scatter(data_linear, data_linear) axs[3].scatter(data_linear, data_squared) plt.show()
Med et 2x2-array konverterer axs.ravel()
det til et 1D-array som inneholder fire elementer.
Dele en akse
Funksjonen subplots()
har også parameterne sharex
og sharey
. De styrer om x- eller y-aksene deles mellom subplottene. Begge er satt til False
som standard.
import matplotlib.pyplot as plt import numpy as np data_linear = np.arange(1, 11) data_squared = data_linear ** 2 # Create a 2x2 subplot grid with shared x-axis across all subplots fig, axs = plt.subplots(2, 2, sharex=True) # Flatten axs array for easier indexing axs = axs.ravel() # Plotting different data on each subplot axs[0].plot(data_linear) axs[1].plot(data_squared) axs[2].scatter(data_linear, data_linear) axs[3].scatter(data_linear, data_squared) plt.show()
Ved å sette sharex=True
deles x-aksen mellom alle delplott, noe som er nyttig her fordi alle delplott bruker de samme x-akseverdiene.
Du kan også sette sharex
eller sharey
til 'row'
for å dele aksen innenfor hver rad av delplott, eller 'col'
for å dele den innenfor hver kolonne av delplott.
Som vanlig kan du utforske mer i
subplots()
dokumentasjonen hvis du ønsker det.
Swipe to start coding
- Bruk riktig funksjon for å opprette et subplot-rutenett.
- Rutenettet skal ha 3 rader og 1 kolonne (angi de to første parameterne).
- Angi det høyreiste nøkkelargumentet slik at x-aksen deles mellom alle subplottene.
- Lagre resultatet av funksjonen for å opprette subplots i variablene
fig
ogaxs
(fra venstre til høyre). - Plasser det første linjediagrammet for
data_linear
på første rad (rad0
) i subplot-rutenettet. - Plasser det andre linjediagrammet for
data_squared
på andre rad (rad1
) i subplot-rutenettet. - Plasser det tredje linjediagrammet for
data_exp
på tredje rad (rad2
) i subplot-rutenettet.
Løsning
Takk for tilbakemeldingene dine!