Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Alikuvioita | Kaavioiden Mukauttaminen
Huipputason Visualisointi Pythonilla

Pyyhkäise näyttääksesi valikon

book
Alikuvioita

subplots()-kirjaston pyplot-funktio on tarkoitettu juuri tähän tarkoitukseen. Sitä käytettiin aiemmin kankaan luomiseen ensimmäisessä osiossa, ja nyt sitä tarkastellaan yksityiskohtaisemmin.

Rivimäärä ja sarakemäärä

Tämän funktion tärkeimmät argumentit ovat nrows ja ncolumns, jotka määrittävät alikuvioiden ruudukon rivien ja sarakkeiden määrän. Oletuksena molemmat ovat 1, jolloin saat yhden kuvan (Axes).

Funktio subplots() palauttaa Figure-olion sekä joko yhden Axes-olion tai taulukon Axes-olioita ruudukon koosta riippuen.

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

2 x 2 alikuvioiden ruudukko luotiin.

Note
Huomio

Koska alikuvioita on useita, subplots palauttaa taulukon Axes-olioita, jotka yleensä tallennetaan muuttujaan nimeltä axs (yksikkömuoto ax on yhdelle kuviolle).

Tässä tapauksessa axs on kaksiulotteinen taulukko, joten tarvitset sekä rivi- että sarakeindeksin päästäksesi tiettyyn alikuvioon.

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

Ensimmäisellä rivillä (rivi 0) on kaksi viivakuvaajaa, ja toisella rivillä (rivi 1) on kaksi hajontakuvaajaa.

Koska jokainen kuvaaja sijoitetaan omalle alikuvalleen, plt.plot()- tai plt.scatter()-funktiota ei voi käyttää suoraan. Oikea tapa on kutsua vastaavaa metodia jokaiselle yksittäiselle Axes-oliolle.

Muuntaminen 1D-taulukoksi

On myös mahdollista käyttää .ravel()-metodia muuntaakseen 2D Axes -taulukon 1D yhtenäiseksi litistetyksi taulukoksi:

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

2x2-taulukossa axs.ravel() muuntaa sen yksiulotteiseksi taulukoksi, jossa on neljä alkiota.

Akselin jakaminen

subplots()-funktiolla on myös sharex- ja sharey-parametrit. Ne määrittävät, jaetaanko x- tai y-akseli alikuvioiden kesken. Molempien oletusarvo on 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

Asetus sharex=True jakaa x-akselin kaikkien aliplottien kesken, mikä on hyödyllistä tässä, koska kaikissa aliploteissa käytetään samoja x-akselin arvoja.

Voit myös asettaa sharex tai sharey arvoksi 'row' jakaaksesi akselin kunkin rivin aliplottien kesken, tai 'col' jakaaksesi sen kunkin sarakkeen aliplottien kesken.

Note
Lisätietoa

Kuten tavallista, voit tutustua lisää subplots() dokumentaatioon, jos haluat.

Tehtävä

Swipe to start coding

  1. Käytä oikeaa funktiota alikuvioiden ruudukon luomiseen.
  2. Ruudukossa tulee olla 3 riviä ja 1 sarake (määrittele kaksi ensimmäistä parametria).
  3. Määrittele oikeanpuoleisin avainsana-argumentti niin, että x-akseli jaetaan kaikille alikuvioille.
  4. Tallenna alikuvioiden luontifunktion tulos fig- ja axs-muuttujiin (vasemmalta oikealle).
  5. Sijoita ensimmäinen viivakaavio data_linear ensimmäiselle riville (rivi 0) alikuvioruudukossa.
  6. Sijoita toinen viivakaavio data_squared toiselle riville (rivi 1) alikuvioruudukossa.
  7. Sijoita kolmas viivakaavio data_exp kolmannelle riville (rivi 2) alikuvioruudukossa.

Ratkaisu

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 6

Kysy tekoälyä

expand
ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

book
Alikuvioita

subplots()-kirjaston pyplot-funktio on tarkoitettu juuri tähän tarkoitukseen. Sitä käytettiin aiemmin kankaan luomiseen ensimmäisessä osiossa, ja nyt sitä tarkastellaan yksityiskohtaisemmin.

Rivimäärä ja sarakemäärä

Tämän funktion tärkeimmät argumentit ovat nrows ja ncolumns, jotka määrittävät alikuvioiden ruudukon rivien ja sarakkeiden määrän. Oletuksena molemmat ovat 1, jolloin saat yhden kuvan (Axes).

Funktio subplots() palauttaa Figure-olion sekä joko yhden Axes-olion tai taulukon Axes-olioita ruudukon koosta riippuen.

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

2 x 2 alikuvioiden ruudukko luotiin.

Note
Huomio

Koska alikuvioita on useita, subplots palauttaa taulukon Axes-olioita, jotka yleensä tallennetaan muuttujaan nimeltä axs (yksikkömuoto ax on yhdelle kuviolle).

Tässä tapauksessa axs on kaksiulotteinen taulukko, joten tarvitset sekä rivi- että sarakeindeksin päästäksesi tiettyyn alikuvioon.

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

Ensimmäisellä rivillä (rivi 0) on kaksi viivakuvaajaa, ja toisella rivillä (rivi 1) on kaksi hajontakuvaajaa.

Koska jokainen kuvaaja sijoitetaan omalle alikuvalleen, plt.plot()- tai plt.scatter()-funktiota ei voi käyttää suoraan. Oikea tapa on kutsua vastaavaa metodia jokaiselle yksittäiselle Axes-oliolle.

Muuntaminen 1D-taulukoksi

On myös mahdollista käyttää .ravel()-metodia muuntaakseen 2D Axes -taulukon 1D yhtenäiseksi litistetyksi taulukoksi:

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

2x2-taulukossa axs.ravel() muuntaa sen yksiulotteiseksi taulukoksi, jossa on neljä alkiota.

Akselin jakaminen

subplots()-funktiolla on myös sharex- ja sharey-parametrit. Ne määrittävät, jaetaanko x- tai y-akseli alikuvioiden kesken. Molempien oletusarvo on 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

Asetus sharex=True jakaa x-akselin kaikkien aliplottien kesken, mikä on hyödyllistä tässä, koska kaikissa aliploteissa käytetään samoja x-akselin arvoja.

Voit myös asettaa sharex tai sharey arvoksi 'row' jakaaksesi akselin kunkin rivin aliplottien kesken, tai 'col' jakaaksesi sen kunkin sarakkeen aliplottien kesken.

Note
Lisätietoa

Kuten tavallista, voit tutustua lisää subplots() dokumentaatioon, jos haluat.

Tehtävä

Swipe to start coding

  1. Käytä oikeaa funktiota alikuvioiden ruudukon luomiseen.
  2. Ruudukossa tulee olla 3 riviä ja 1 sarake (määrittele kaksi ensimmäistä parametria).
  3. Määrittele oikeanpuoleisin avainsana-argumentti niin, että x-akseli jaetaan kaikille alikuvioille.
  4. Tallenna alikuvioiden luontifunktion tulos fig- ja axs-muuttujiin (vasemmalta oikealle).
  5. Sijoita ensimmäinen viivakaavio data_linear ensimmäiselle riville (rivi 0) alikuvioruudukossa.
  6. Sijoita toinen viivakaavio data_squared toiselle riville (rivi 1) alikuvioruudukossa.
  7. Sijoita kolmas viivakaavio data_exp kolmannelle riville (rivi 2) alikuvioruudukossa.

Ratkaisu

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 6
Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Pahoittelemme, että jotain meni pieleen. Mitä tapahtui?
some-alt