Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Työskentely Selitteen Kanssa | Osio
Datan Visualisointi Matplotlibilla

bookTyöskentely Selitteen Kanssa

Kun kaaviossa on useita elementtejä, selite auttaa selventämään, mitä kukin elementti edustaa. matplotlib tarjoaa useita tapoja luoda selite.

Ensimmäinen vaihtoehto

Kaikki selitteet voidaan määrittää suoraan plt.legend()-funktiossa:

123456789101112131415161718
import numpy as np import matplotlib.pyplot as plt questions = ['question_1', 'question_2', 'question_3'] yes_answers = np.array([500, 240, 726]) no_answers = np.array([432, 618, 101]) answers = np.array([yes_answers, no_answers]) positions = np.arange(len(questions)) width = 0.3 for i in range(len(answers)): plt.bar(positions + width * i, answers[i], width) plt.xticks(positions + width*(len(answers)-1)/2, questions) plt.legend(['positive answers', 'negative answers']) plt.show()
copy

Tämä luo selitteen vasempaan yläkulmaan välittämällä listan nimikkeitä plt.legend()-funktiolle.

Toinen vaihtoehto

Voit myös määrittää nimikkeet suoraan piirtofunktioissa käyttämällä label=-parametria:

1234567891011121314151617181920
import matplotlib.pyplot as plt import numpy as np questions = ['question_1', 'question_2', 'question_3'] positions = np.arange(len(questions)) yes_answers = np.array([500, 240, 726]) no_answers = np.array([432, 618, 101]) answers = [yes_answers, no_answers] labels = ['positive answers', 'negative answers'] width = 0.3 for i in range(len(answers)): plt.bar(positions + width*i, answers[i], width, label=labels[i]) plt.xticks(positions + width*(len(answers)-1)/2, questions) plt.legend() plt.show()
copy

Tässä plt.legend() kerää automaattisesti tunnisteet piirretyistä elementeistä.

Kolmas vaihtoehto

Voit myös asettaa tunnisteet palautetun artist-olion set_label()-metodilla:

12345678910111213141516171819202122
import matplotlib.pyplot as plt import numpy as np questions = ['question_1', 'question_2', 'question_3'] positions = np.arange(len(questions)) yes_answers = np.array([500, 240, 726]) no_answers = np.array([432, 618, 101]) answers = [yes_answers, no_answers] width = 0.3 labels = ['positive answers', 'negative answers'] for i in range(len(answers)): bar = plt.bar(positions + width*i, answers[i], width) bar.set_label(labels[i]) center_positions = positions + width*(len(answers)-1)/2 plt.xticks(center_positions, questions) plt.legend(loc='upper center') plt.show()
copy

Selitteen sijainti

Argumentti loc määrittää, mihin kohtaan selite sijoitetaan. Oletusarvo 'best' pyytää matplotlib-kirjastoa valitsemaan automaattisesti parhaan sijainnin.

12345678910111213141516171819202122
import matplotlib.pyplot as plt import numpy as np questions = ['question_1', 'question_2', 'question_3'] positions = np.arange(len(questions)) yes_answers = np.array([500, 240, 726]) no_answers = np.array([432, 618, 101]) answers = [yes_answers, no_answers] labels = ['positive answers', 'negative answers'] width = 0.3 for i, label in enumerate(labels): bars = plt.bar(positions + width*i, answers[i], width) bars.set_label(label) center_positions = positions + width*(len(answers)-1)/2 plt.xticks(center_positions, questions) plt.legend(loc='upper center') plt.show()
copy

Kelvollisia arvoja loc-parametrille ovat:

'upper left'

'upper center'

'upper right'

'center left'

'center'

'center right'

'lower left'

'lower center'

'lower right'

Voit myös käyttää vaihtoehtoa 'best', joka sijoittaa selitteen automaattisesti kohtaan, jossa se peittää vähiten piirrettävää dataa. Lisäksi 'right' tuottaa saman tuloksen kuin 'center right'.

Note
Lisätietoa

Voit tutustua aiheeseen lisää legend() dokumentaatiossa

Tehtävä

Swipe to start coding

  1. Merkitse alimmat pylväät nimellä 'primary sector' käyttämällä sopivaa avainsana-argumenttia.
  2. Merkitse keskimmäiset pylväät nimellä 'secondary sector' käyttämällä sopivaa avainsana-argumenttia.
  3. Merkitse ylimmät pylväät nimellä 'tertiary sector' käyttämällä sopivaa avainsana-argumenttia.
  4. Sijoita selite oikealle puolelle, pystysuunnassa keskitettynä.

Ratkaisu

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 10
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

close

bookTyöskentely Selitteen Kanssa

Pyyhkäise näyttääksesi valikon

Kun kaaviossa on useita elementtejä, selite auttaa selventämään, mitä kukin elementti edustaa. matplotlib tarjoaa useita tapoja luoda selite.

Ensimmäinen vaihtoehto

Kaikki selitteet voidaan määrittää suoraan plt.legend()-funktiossa:

123456789101112131415161718
import numpy as np import matplotlib.pyplot as plt questions = ['question_1', 'question_2', 'question_3'] yes_answers = np.array([500, 240, 726]) no_answers = np.array([432, 618, 101]) answers = np.array([yes_answers, no_answers]) positions = np.arange(len(questions)) width = 0.3 for i in range(len(answers)): plt.bar(positions + width * i, answers[i], width) plt.xticks(positions + width*(len(answers)-1)/2, questions) plt.legend(['positive answers', 'negative answers']) plt.show()
copy

Tämä luo selitteen vasempaan yläkulmaan välittämällä listan nimikkeitä plt.legend()-funktiolle.

Toinen vaihtoehto

Voit myös määrittää nimikkeet suoraan piirtofunktioissa käyttämällä label=-parametria:

1234567891011121314151617181920
import matplotlib.pyplot as plt import numpy as np questions = ['question_1', 'question_2', 'question_3'] positions = np.arange(len(questions)) yes_answers = np.array([500, 240, 726]) no_answers = np.array([432, 618, 101]) answers = [yes_answers, no_answers] labels = ['positive answers', 'negative answers'] width = 0.3 for i in range(len(answers)): plt.bar(positions + width*i, answers[i], width, label=labels[i]) plt.xticks(positions + width*(len(answers)-1)/2, questions) plt.legend() plt.show()
copy

Tässä plt.legend() kerää automaattisesti tunnisteet piirretyistä elementeistä.

Kolmas vaihtoehto

Voit myös asettaa tunnisteet palautetun artist-olion set_label()-metodilla:

12345678910111213141516171819202122
import matplotlib.pyplot as plt import numpy as np questions = ['question_1', 'question_2', 'question_3'] positions = np.arange(len(questions)) yes_answers = np.array([500, 240, 726]) no_answers = np.array([432, 618, 101]) answers = [yes_answers, no_answers] width = 0.3 labels = ['positive answers', 'negative answers'] for i in range(len(answers)): bar = plt.bar(positions + width*i, answers[i], width) bar.set_label(labels[i]) center_positions = positions + width*(len(answers)-1)/2 plt.xticks(center_positions, questions) plt.legend(loc='upper center') plt.show()
copy

Selitteen sijainti

Argumentti loc määrittää, mihin kohtaan selite sijoitetaan. Oletusarvo 'best' pyytää matplotlib-kirjastoa valitsemaan automaattisesti parhaan sijainnin.

12345678910111213141516171819202122
import matplotlib.pyplot as plt import numpy as np questions = ['question_1', 'question_2', 'question_3'] positions = np.arange(len(questions)) yes_answers = np.array([500, 240, 726]) no_answers = np.array([432, 618, 101]) answers = [yes_answers, no_answers] labels = ['positive answers', 'negative answers'] width = 0.3 for i, label in enumerate(labels): bars = plt.bar(positions + width*i, answers[i], width) bars.set_label(label) center_positions = positions + width*(len(answers)-1)/2 plt.xticks(center_positions, questions) plt.legend(loc='upper center') plt.show()
copy

Kelvollisia arvoja loc-parametrille ovat:

'upper left'

'upper center'

'upper right'

'center left'

'center'

'center right'

'lower left'

'lower center'

'lower right'

Voit myös käyttää vaihtoehtoa 'best', joka sijoittaa selitteen automaattisesti kohtaan, jossa se peittää vähiten piirrettävää dataa. Lisäksi 'right' tuottaa saman tuloksen kuin 'center right'.

Note
Lisätietoa

Voit tutustua aiheeseen lisää legend() dokumentaatiossa

Tehtävä

Swipe to start coding

  1. Merkitse alimmat pylväät nimellä 'primary sector' käyttämällä sopivaa avainsana-argumenttia.
  2. Merkitse keskimmäiset pylväät nimellä 'secondary sector' käyttämällä sopivaa avainsana-argumenttia.
  3. Merkitse ylimmät pylväät nimellä 'tertiary sector' käyttämällä sopivaa avainsana-argumenttia.
  4. Sijoita selite oikealle puolelle, pystysuunnassa keskitettynä.

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 1. Luku 10
single

single

some-alt