Matplotlib

Altair er ikke det eneste Python-biblioteket som kan brukes for å visualisere data.

Matplotlib er et stort biblitek for å lage statistiske, animerte og interaktive visualiseringer. Innad i Matplotlib er Pyplot, eller matplotlib.pyplot, en samling av funksjoner som får matplotlib til å fungere som MATLAB. Hver pyplot-funksjon gjør en endring på figure, for eksempel: plotte et areal, plotte linjer, legge til tittel og aksebesrkivelser.

I dette kursnotatet vil vi veldig kort demonstrere hva pyplot kan gjøre, for å vise hvordan det skiller seg fra Altair.

Interaktivitet, animasjoner, matematiske operasjoner er blant tingene man kan gjøre i Matplotlib. Disse vil ikke bli diskutert i INF100. Dette biblioteket kan likevel bli svært nyttig for vitenskapelig publisering og dataanalysearbeid, så gjerne se på et mer detaljert Pyplot-kurs senere når du har tid.

Multiple plots via Matplotlib

Image credit: Wikimedia - Adrien F Vincent

Importer Pyplot

Først må vi importere bibliotekene pandas for dataframes og matplotlib.pyplot for visualisering.

Husk: Du må først pip install pandas og matplotlib i terminalen.

import pandas as pd
import matplotlib.pyplot as plt

Last ned dataframen

Som i Dataanalyse-kursnotatet, laster vi inn datasettet som en dataframe ved å bruke den innebygde funksjonen i pandas: read_csv(). Vi fortsetter med Hawks-datasettet!

hawks = pd.read_csv('http://raw.githubusercontent.com/vincentarelbundock/Rdatasets/refs/heads/master/csv/Stat2Data/Hawks.csv', index_col=0)
hawks.head()

Plotting

Å visualisere i pyplot går svært raskt. Vi kjører pyplot-metoden plot(). Denne metoden plotter y-verdier mot x-verdier som linjer og/eller markeringer. Denne metoden tar inn de dataattributtene du ønsker å plotte, for eksempel kolonnene Wing og Weight i hawks-dataframen.

For å se plottet, kalles metdoen show()

plt.plot(hawks.Wing, hawks.Weight) # plot(x,y)
plt.show() 

Som standard genererer plot() et blått linje-plot. Dette er en ganske kaotisk måte å visualisere forholdet mellom Wing og Weight. Her er begge dataene vi ønsker å visualisere numeriske. Et linjeplot egner seg best for tidsavhengige data (for eksempel inntekt over tid).

For to numeriske data er scatterplot (spredningsplott) en mye mer hensiktsmessig visualisering. Vi kan endre figuren til et scatterplot ved å legge til argumentet ‘o’, som forteller pyplot å bruke sirkelmerker. Her bruker vi argumentet ‘go’, der bokstaven ‘g’ gjør sirklene grønne.

plt.plot(hawks.Wing, hawks.Weight, 'go')
plt.show() 

Vi kan videre fikse på figuren ved å legge til aksebeskrivelser og en tittel. Dette er svært viktige elementer i en visualisering!

plt.plot(hawks.Wing, hawks.Weight, 'go')
plt.ylabel("Weight")
plt.xlabel("Wing length")
plt.title("Relationship between a hawk's weight and wingspan")
plt.show()

Istedenfor å tilpasse en chart manuelt, kan man også plotte en rekke plots direkte ved å bruke mer spesifikke metoder (scatterplots: scatter(), histogram: hist(), søylediagram: bar(), korrelasjon: xcorr() osv).

Vi er heller ikke begrenset til kun én chart. Hvis vi ønsker å legge flere visualiseringer sammen, må man først definere en layout ved å bruke figure(). Deretter kan vi bruke subplot() for å plassere hver chart i figuren. For eksempel:

plt.figure(figsize=(9,3)) # Create a 9x3 inch figure

plt.subplot(1, 2, 1) # The figure will have 1 row and 2 columns. Place scatterplot 1st from the left.
plt.scatter(hawks.Wing, hawks.Weight)

plt.subplot(1, 2, 2) # Place histogram 2nd from the left.
plt.hist(hawks.Wing)

plt.show()