Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Underplots | Tilpasning af Plots
Ultimativ Visualisering med Python

Stryg for at vise menuen

book
Underplots

Funktionen subplots() fra pyplot tjener dette specifikke formål. Den blev tidligere brugt til at oprette et lærred i det første afsnit, og nu vil den blive undersøgt mere detaljeret.

Rækker og kolonner

De vigtigste argumenter for denne funktion er nrows og ncolumns, som angiver antallet af rækker og kolonner i subplot-gitteret. Som standard er begge sat til 1, så du får kun én plot (Axes).

Funktionen subplots() returnerer et Figure-objekt og enten ét Axes-objekt eller et array af Axes-objekter, afhængigt af gitterets størrelse.

12345
import matplotlib.pyplot as plt fig, axs = plt.subplots(2, 2) plt.show()
copy

Et 2 gange 2 subplot-gitter blev oprettet.

Note
Bemærk

Da der er flere subplots, returnerer subplots et array af Axes-objekter, som normalt gemmes i en variabel kaldet axs (entalsformen ax bruges til én plot).

I dette tilfælde er axs et todimensionelt array, så du skal bruge både række- og kolonneindeks for at få adgang til et specifikt subplot.

12345678910111213141516
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()
copy

Den første række (række 0) indeholder to linjediagrammer, og den anden række (række 1) indeholder to spredningsdiagrammer.

Da hvert diagram placeres på et separat subplot, kan plt.plot() eller plt.scatter() ikke anvendes direkte. Den korrekte metode er at kalde den tilsvarende metode på hvert enkelt Axes-objekt.

Konvertering til 1D-array

Det er også muligt at bruge .ravel()-metoden til at konvertere et 2D Axes-array til et 1D sammenhængende fladet array:

12345678910111213141516171819
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()
copy

Med et 2x2 array konverterer axs.ravel() det til et 1D-array, der indeholder fire elementer.

Deling af en akse

Funktionen subplots() har også parametrene sharex og sharey. De styrer, om x- eller y-aksen deles på tværs af underplots. Begge er som standard sat til False.

12345678910111213141516171819
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()
copy

Indstillingen sharex=True deler x-aksen på alle underplots, hvilket er nyttigt her, da alle underplots bruger de samme x-akseværdier.

Du kan også sætte sharex eller sharey til 'row' for at dele aksen inden for hver række af underplots, eller 'col' for at dele den inden for hver kolonne af underplots.

Note
Undersøg Mere

Som sædvanlig er du velkommen til at udforske mere i subplots() dokumentationen hvis du ønsker det.

Opgave

Swipe to start coding

  1. Brug den korrekte funktion til at oprette et subplot-gitter.
  2. Gitteret skal have 3 rækker og 1 kolonne (angiv de to første parametre).
  3. Angiv det yderste nøgleord-argument, så x-aksen deles mellem alle subplots.
  4. Gem resultatet af funktionen til oprettelse af subplots i variablerne fig og axs (fra venstre mod højre).
  5. Placer det første linjediagram for data_linear på den første række (række 0) i subplot-gitteret.
  6. Placer det andet linjediagram for data_squared på den anden række (række 1) i subplot-gitteret.
  7. Placer det tredje linjediagram for data_exp på den tredje række (række 2) i subplot-gitteret.

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 6

Spørg AI

expand
ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

book
Underplots

Funktionen subplots() fra pyplot tjener dette specifikke formål. Den blev tidligere brugt til at oprette et lærred i det første afsnit, og nu vil den blive undersøgt mere detaljeret.

Rækker og kolonner

De vigtigste argumenter for denne funktion er nrows og ncolumns, som angiver antallet af rækker og kolonner i subplot-gitteret. Som standard er begge sat til 1, så du får kun én plot (Axes).

Funktionen subplots() returnerer et Figure-objekt og enten ét Axes-objekt eller et array af Axes-objekter, afhængigt af gitterets størrelse.

12345
import matplotlib.pyplot as plt fig, axs = plt.subplots(2, 2) plt.show()
copy

Et 2 gange 2 subplot-gitter blev oprettet.

Note
Bemærk

Da der er flere subplots, returnerer subplots et array af Axes-objekter, som normalt gemmes i en variabel kaldet axs (entalsformen ax bruges til én plot).

I dette tilfælde er axs et todimensionelt array, så du skal bruge både række- og kolonneindeks for at få adgang til et specifikt subplot.

12345678910111213141516
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()
copy

Den første række (række 0) indeholder to linjediagrammer, og den anden række (række 1) indeholder to spredningsdiagrammer.

Da hvert diagram placeres på et separat subplot, kan plt.plot() eller plt.scatter() ikke anvendes direkte. Den korrekte metode er at kalde den tilsvarende metode på hvert enkelt Axes-objekt.

Konvertering til 1D-array

Det er også muligt at bruge .ravel()-metoden til at konvertere et 2D Axes-array til et 1D sammenhængende fladet array:

12345678910111213141516171819
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()
copy

Med et 2x2 array konverterer axs.ravel() det til et 1D-array, der indeholder fire elementer.

Deling af en akse

Funktionen subplots() har også parametrene sharex og sharey. De styrer, om x- eller y-aksen deles på tværs af underplots. Begge er som standard sat til False.

12345678910111213141516171819
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()
copy

Indstillingen sharex=True deler x-aksen på alle underplots, hvilket er nyttigt her, da alle underplots bruger de samme x-akseværdier.

Du kan også sætte sharex eller sharey til 'row' for at dele aksen inden for hver række af underplots, eller 'col' for at dele den inden for hver kolonne af underplots.

Note
Undersøg Mere

Som sædvanlig er du velkommen til at udforske mere i subplots() dokumentationen hvis du ønsker det.

Opgave

Swipe to start coding

  1. Brug den korrekte funktion til at oprette et subplot-gitter.
  2. Gitteret skal have 3 rækker og 1 kolonne (angiv de to første parametre).
  3. Angiv det yderste nøgleord-argument, så x-aksen deles mellem alle subplots.
  4. Gem resultatet af funktionen til oprettelse af subplots i variablerne fig og axs (fra venstre mod højre).
  5. Placer det første linjediagram for data_linear på den første række (række 0) i subplot-gitteret.
  6. Placer det andet linjediagram for data_squared på den anden række (række 1) i subplot-gitteret.
  7. Placer det tredje linjediagram for data_exp på den tredje række (række 2) i subplot-gitteret.

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 6
Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Vi beklager, at noget gik galt. Hvad skete der?
some-alt