Delplottar
subplots()-funktionen från pyplot används för detta specifika syfte. Den användes tidigare för att skapa en canvas i 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 subplot-nä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å nätets storlek.
12345import matplotlib.pyplot as plt fig, axs = plt.subplots(2, 2) plt.show()
Ett 2 gånger 2 subplot-nät skapades.
Eftersom det finns flera subplots returnerar subplots en array av Axes-objekt, som vanligtvis lagras i en variabel som kallas axs (singular ax används för en 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.
12345678910111213141516import 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()
Den första raden (rad 0) har två linjediagram, och den andra raden (rad 1) har 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 2D Axes-array till en 1D sammanhängande platt array:
12345678910111213141516171819import 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 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 delplottarna. Båda är som standard satta till False.
12345678910111213141516171819import 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()
Att ange sharex=True delar x-axeln mellan alla delplottar, vilket är användbart här eftersom alla delplottar använder samma x-axelvärden.
Du kan också 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.
Som vanligt, känn dig fri att utforska mer i
subplots() dokumentationen om du vill.
Swipe to start coding
- Använd rätt funktion för att skapa ett subplot-nät.
- Nätet ska ha 3 rader och 1 kolumn (ange de två första parametrarna).
- Ange det högra nyckelordet så att x-axeln delas mellan alla subplots.
- Spara resultatet av funktionen för att skapa subplots i variablerna
figochaxs(från vänster till höger). - Placera det första linjediagrammet för
data_linearpå den första raden (rad0) i subplot-nätet. - Placera det andra linjediagrammet för
data_squaredpå den andra raden (rad1) i subplot-nätet. - Placera det tredje linjediagrammet för
data_exppå den tredje raden (rad2) i subplot-nätet.
Lösning
Tack för dina kommentarer!
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Awesome!
Completion rate improved to 3.85
Delplottar
Svep för att visa menyn
subplots()-funktionen från pyplot används för detta specifika syfte. Den användes tidigare för att skapa en canvas i 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 subplot-nä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å nätets storlek.
12345import matplotlib.pyplot as plt fig, axs = plt.subplots(2, 2) plt.show()
Ett 2 gånger 2 subplot-nät skapades.
Eftersom det finns flera subplots returnerar subplots en array av Axes-objekt, som vanligtvis lagras i en variabel som kallas axs (singular ax används för en 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.
12345678910111213141516import 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()
Den första raden (rad 0) har två linjediagram, och den andra raden (rad 1) har 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 2D Axes-array till en 1D sammanhängande platt array:
12345678910111213141516171819import 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 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 delplottarna. Båda är som standard satta till False.
12345678910111213141516171819import 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()
Att ange sharex=True delar x-axeln mellan alla delplottar, vilket är användbart här eftersom alla delplottar använder samma x-axelvärden.
Du kan också 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.
Som vanligt, känn dig fri att utforska mer i
subplots() dokumentationen om du vill.
Swipe to start coding
- Använd rätt funktion för att skapa ett subplot-nät.
- Nätet ska ha 3 rader och 1 kolumn (ange de två första parametrarna).
- Ange det högra nyckelordet så att x-axeln delas mellan alla subplots.
- Spara resultatet av funktionen för att skapa subplots i variablerna
figochaxs(från vänster till höger). - Placera det första linjediagrammet för
data_linearpå den första raden (rad0) i subplot-nätet. - Placera det andra linjediagrammet för
data_squaredpå den andra raden (rad1) i subplot-nätet. - Placera det tredje linjediagrammet för
data_exppå den tredje raden (rad2) i subplot-nätet.
Lösning
Tack för dina kommentarer!
single