Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Delplottar | Anpassning av Diagram
Ultimat Visualisering med Python

Svep för att visa menyn

book
Delplottar

Funktionen subplots() från pyplot används för detta specifika ändamål. Den användes tidigare för att skapa en arbetsyta i det första avsnittet, och nu kommer den att undersökas mer ingående.

Rader och kolumner

De viktigaste argumenten för denna funktion är nrows och ncolumns, vilka anger antalet rader och kolumner i subplotrutnätet. Som standard är båda satta till 1, vilket ger en enda plot (Axes).

Funktionen subplots() returnerar ett Figure-objekt och antingen ett Axes-objekt eller en array av Axes-objekt, beroende på rutnätets storlek.

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

Ett 2 gånger 2 subplot-nät skapades.

Note
Notera

Eftersom det finns flera subplots returnerar subplots en array av Axes-objekt, som vanligtvis lagras i en variabel kallad axs (singulärt ax används för en enskild plot).

I detta fall är axs en tvådimensionell array, så du behöver både rad- och kolumnindex för att komma åt en specifik 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örsta raden (rad 0) innehåller två linjediagram, och den andra raden (rad 1) innehåller två spridningsdiagram.

Eftersom varje diagram placeras i en separat subplot kan plt.plot() eller plt.scatter() inte användas direkt. Det korrekta tillvägagångssättet är att anropa motsvarande metod på varje enskilt Axes-objekt.

Omvandling till 1D-array

Det är också möjligt att använda metoden .ravel() för att omvandla en tvådimensionell Axes-array till en endimensionell kontinuerlig flattenad 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 en 2x2-array omvandlar axs.ravel() den till en endimensionell array med fyra element.

Dela en axel

Funktionen subplots() har även parametrarna sharex och sharey. Dessa styr om x- eller y-axlarna delas mellan delgrafer. Båda är som standard satta till 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

Genom att ange sharex=True delas x-axeln mellan alla delplottar, vilket är användbart här eftersom alla delplottar använder samma x-axelvärden.

Du kan även ange sharex eller sharey till 'row' för att dela axeln inom varje rad av delplottar, eller 'col' för att dela den inom varje kolumn av delplottar.

Note
Studera vidare

Som vanligt, utforska gärna mer i subplots() dokumentationen om du vill.

Uppgift

Swipe to start coding

  1. Använd rätt funktion för att skapa ett subplot-nät.
  2. Nätet ska ha 3 rader och 1 kolumn (ange de två första parametrarna).
  3. Ange det högra nyckelordet så att x-axeln delas mellan alla subplots.
  4. Spara resultatet av funktionen för att skapa subplots i variablerna fig och axs (från vänster till höger).
  5. Placera det första linjediagrammet för data_linear på den första raden (rad 0) i subplot-nätet.
  6. Placera det andra linjediagrammet för data_squared på den andra raden (rad 1) i subplot-nätet.
  7. Placera det tredje linjediagrammet för data_exp på den tredje raden (rad 2) i subplot-nätet.

Lösning

Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 6

Fråga AI

expand
ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

book
Delplottar

Funktionen subplots() från pyplot används för detta specifika ändamål. Den användes tidigare för att skapa en arbetsyta i det första avsnittet, och nu kommer den att undersökas mer ingående.

Rader och kolumner

De viktigaste argumenten för denna funktion är nrows och ncolumns, vilka anger antalet rader och kolumner i subplotrutnätet. Som standard är båda satta till 1, vilket ger en enda plot (Axes).

Funktionen subplots() returnerar ett Figure-objekt och antingen ett Axes-objekt eller en array av Axes-objekt, beroende på rutnätets storlek.

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

Ett 2 gånger 2 subplot-nät skapades.

Note
Notera

Eftersom det finns flera subplots returnerar subplots en array av Axes-objekt, som vanligtvis lagras i en variabel kallad axs (singulärt ax används för en enskild plot).

I detta fall är axs en tvådimensionell array, så du behöver både rad- och kolumnindex för att komma åt en specifik 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örsta raden (rad 0) innehåller två linjediagram, och den andra raden (rad 1) innehåller två spridningsdiagram.

Eftersom varje diagram placeras i en separat subplot kan plt.plot() eller plt.scatter() inte användas direkt. Det korrekta tillvägagångssättet är att anropa motsvarande metod på varje enskilt Axes-objekt.

Omvandling till 1D-array

Det är också möjligt att använda metoden .ravel() för att omvandla en tvådimensionell Axes-array till en endimensionell kontinuerlig flattenad 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 en 2x2-array omvandlar axs.ravel() den till en endimensionell array med fyra element.

Dela en axel

Funktionen subplots() har även parametrarna sharex och sharey. Dessa styr om x- eller y-axlarna delas mellan delgrafer. Båda är som standard satta till 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

Genom att ange sharex=True delas x-axeln mellan alla delplottar, vilket är användbart här eftersom alla delplottar använder samma x-axelvärden.

Du kan även ange sharex eller sharey till 'row' för att dela axeln inom varje rad av delplottar, eller 'col' för att dela den inom varje kolumn av delplottar.

Note
Studera vidare

Som vanligt, utforska gärna mer i subplots() dokumentationen om du vill.

Uppgift

Swipe to start coding

  1. Använd rätt funktion för att skapa ett subplot-nät.
  2. Nätet ska ha 3 rader och 1 kolumn (ange de två första parametrarna).
  3. Ange det högra nyckelordet så att x-axeln delas mellan alla subplots.
  4. Spara resultatet av funktionen för att skapa subplots i variablerna fig och axs (från vänster till höger).
  5. Placera det första linjediagrammet för data_linear på den första raden (rad 0) i subplot-nätet.
  6. Placera det andra linjediagrammet för data_squared på den andra raden (rad 1) i subplot-nätet.
  7. Placera det tredje linjediagrammet för data_exp på den tredje raden (rad 2) i subplot-nätet.

Lösning

Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 6
Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Vi beklagar att något gick fel. Vad hände?
some-alt