Matplotlib er et populært Python-bibliotek som ofte brukes av maskinlæringsprofesjonelle for å generere både statiske og dynamiske visualiseringer av data.
Hva er Matplotlib?
Matplotlib ble utviklet av John D. Hunter i 2003, med den første utgivelsen 8. mai 2021. Den nåværende stabile versjonen er 3.4.2.
Biblioteket er primært skrevet i Python, med deler i C-objektiv og JavaScript, noe som sikrer kompatibilitet på tvers av ulike plattformer.
Matplotlib bygger på NumPy, en Python-utvidelse for numerisk analyse. Kombinasjonen med NumPy bidrar til at Matplotlib er et foretrukket åpen kildekode-alternativ til MATLAB.
For Python GUI-applikasjoner tilbyr Matplotlib muligheten til å integrere statiske plot ved hjelp av det objektorienterte API-et.
Med noen få linjer Python-kode kan brukere visualisere data ved hjelp av ulike plottyper, inkludert spredningsdiagrammer, histogrammer, stolpediagrammer, sektordiagrammer, linjediagrammer og boksplott.
Matplotlib kan brukes til å generere plot i mange miljøer, som Python-skallet, Jupyter Notebook, Jupyter Lab, samt i utviklingsmiljøer som Pycharm og Anaconda. Det fungerer også med webapplikasjonsservere som Flask og Django på tvers av forskjellige operativsystemer.
Som i MATLAB, gir Matplotlib omfattende kontroll over plot, inkludert justeringer av fonter, linjer, farger og stiler.
Etter denne korte introduksjonen til Matplotlib i Python, la oss se hvordan du kan konfigurere dette biblioteket på ditt eget system.
Konfigurere Matplotlib-miljøet
Som med andre Python-pakker og biblioteker, kan du installere det forhåndskompilerte Matplotlib-biblioteket via pip-pakkebehandleren på alle operativsystemer.
Det forutsetter selvfølgelig at du har Python og pip installert på systemet ditt.
Følgende kommandoer viser versjonene av Python og pip for å bekrefte at disse verktøyene allerede er installert:
Sjekk om Python er installert
Python --version
Sjekk om pip er installert
pip -V
Installer Matplotlib
Kommandoen nedenfor installerer Matplotlib-pakken fra Python Package Index (PyPI).
python -m pip install matplotlib
Denne kommandoen laster ned og installerer de nødvendige Matplotlib-pakkene. Du vil se en bekreftelsesmelding når installasjonen er fullført.
For å sjekke at Matplotlib er installert, skriv inn følgende kommando. Den vil vise Matplotlibs versjon i ledeteksten.
import matplotlib matplotlib.__version__
Utviklere som ønsker å installere den ukompilerte Matplotlib-pakken, må ha tilgang til en kompatibel kompilator på systemet sitt, i tillegg til diverse avhengigheter, oppsettskript, konfigurasjonsfiler og patche.
Denne metoden for installasjon kan være mer kompleks, spesielt for de som er nye til Matplotlib. Derfor er det ofte lettere å benytte en enkel kommando for å installere biblioteket på få sekunder.
Etter at Matplotlib er installert, kan du importere pakken til ditt prosjekt for å få tilgang til verktøyene.
Matplotlibs plottemuligheter
Matplotlib tilbyr et bredt utvalg av plottemuligheter for visualisering av data. Det gir også muligheten til å tilpasse plottene med ulike temaer, farger og palettalternativer.
Disse plottemulighetene inkluderer:
#1. Stolpediagrammer
Stolpediagrammer er et godt alternativ for å visualisere en kvantitativ sammenligning av verdier innenfor samme kategori.
Matplotlib representerer dette plottet med rektangulære stolper hvor lengden eller høyden representerer de proporsjonale verdiene. Stolpene kan være enten horisontale eller vertikale.
Matplotlib bruker funksjonen plt.bar()
for å lage stolpediagrammet.
Du kan også bruke flere andre funksjoner for å manipulere plottet. Funksjonene plt.xlabel()
og plt.ylabel()
setter navn på henholdsvis x- og y-aksen.
Funksjonen plt.title()
gir plottet en tittel, mens plt.savefig()
lagrer plottet. Den viktige funksjonen plot.show()
viser til slutt plottet.
#2. Sektordiagrammer
Sektordiagrammer, også kjent som kakediagrammer, brukes for å visualisere den proporsjonale fordelingen av elementer innenfor samme kategori.
Kakediagrammer viser data i prosentform. Hele diagrammet representerer 100% av dataene, mens de enkelte kakestykkene viser deler av denne prosentandelen.
Matplotlib bruker funksjonen plt.pie()
som tegner og justerer sektordiagrammets parametere.
Flere parametere, som autopct
som skriver ut verdiene i diagrammet med en desimal, er nyttige for å tilpasse plottet.
Bedrifter bruker ofte sektordiagrammer for å presentere data knyttet til drift, salg eller ressurser.
#3. Histogrammer
Et histogram viser distribusjonen av numeriske data. Det bruker kontinuerlige intervaller for å dele dataene i distinkte seksjoner.
Den viktigste forskjellen mellom et histogram og et stolpediagram er typen data de håndterer. Histogrammer brukes for kontinuerlige data, mens stolpediagrammer brukes for kategoriske data.
Matplotlib bruker funksjonen hist()
, som benytter en rekke tilfeldige eller definerte verdier for å lage histogrammet.
#4. Linjediagrammer
Disse plottene brukes for å vise forholdet mellom to dataverdier, som kan være numeriske eller kategoriske, langs X- og Y-aksene.
Linjediagrammer er spesielt nyttige for å spore endringer i dataverdier over tid.
#5. Spredningsdiagrammer
Spredningsdiagrammer viser sammenhengen, inkludert korrelasjonen mellom variablene i et datasett. Det er også nyttig for å identifisere avvik.
Spredningsdiagrammer bruker prikker for å representere forholdet mellom datavariablene, og hvordan en endring i en variabel kan påvirke en annen.
Hvordan lage plot i Matplotlib
Matplotlib bruker ulike funksjoner for å lage forskjellige plottyper. Det krever vanligvis bare noen få kodelinjer for å generere et plot.
Nedenfor ser vi hvordan du kan lage de forskjellige plottypene ved hjelp av ulike Matplotlib-funksjoner.
#1. Stolpediagram i Matplotlib
Som forklart tidligere, viser stolpediagrammer datakategorier med stolper og akser som representerer en sammenligning av kategorier på den ene aksen, og de tilhørende verdiene på den andre aksen.
Funksjonen bar()
i Matplotlib bruker ulike argumentoppsett for å beskrive utformingen av stolpene, som vist nedenfor.
plt.bar(x, y, height, width, bottom, align)
Parametrene x
og y
representerer henholdsvis x- og y-koordinatverdiene for stolpene i diagrammet. Breddeparameteren (width
) representerer stolpens bredde, og høydeparameteren (height
) representerer stolpens høyde.
La oss for eksempel visualisere antallet hunder og katter i et dyrehjem ved navn x.
import matplotlib.pyplot as plt import numpy as np x = ["Cats", "Dogs"] plt.xlabel("Cats and Dogs in Shelter") plt.ylabel("No. of animals in Shelter") plt.title("Number of cats and dogs in shelter x") y = [300, 350] plt.bar(x, y, color="black", width = 0.5)
Resultat:
Utdata av stolpediagram i Matplotlib
Som i eksemplet ovenfor kan du også angi fargen på stolpene med fargeattributtet. plt.xlabel
og plt.ylabel
setter navn på henholdsvis x- og y-aksene, mens plt.title
setter en tittel på plottet.
#2. Hvordan lage et sektordiagram
Matplotlib bruker funksjonen pie()
, som er en del av pyplot
-modulen, for å lage et sektordiagram. Funksjonen tar inn dataene som skal plottes i matriseform.
Syntaks:
matplotlib.pyplot.pie(data, explode=None, labels=None, colors=None, autopct=None, shadow=False)
Fargeparameteren (colors
) setter fargen på de ulike delene av sektordiagrammet. Du kan benytte et utvalg av verdier for å angi farge for hver del.
For å inkludere ytterligere detaljer om hver del, legger autopct
-argumentet til de numeriske prosentene som hver del representerer, ved hjelp av Pythons strengformateringsnotasjon. explode
-argumentet aksepterer en rekke verdier, som starter fra 0,1, for å definere avstanden til hver del fra midten av diagrammet.
La oss lage et sektordiagram som viser ressursene i prosent allokert til et bestemt prosjekt.
import matplotlib.pyplot as plt import numpy as np y = np.array([25, 10, 45, 20]) mylabels = ["w", "x", "y", "z"] explodevalues = [0.1, 0.2, 0, 0] colors = ['tab:blue', 'tab:green', 'tab:orange', 'tab:red'] plt.title("Resources allocated for a random project") plt.pie(y, labels = mylabels, colors=colors,explode = explodevalues, autopct="%1.1f%%", shadow = True) plt.show()
Resultat:
Utdata av sektordiagram i Matplotlib
Diagrammet ovenfor viser et sektordiagram med fire deler merket henholdsvis w, x, y og z. explode
-verdiene definerer hvor langt ut fra midten av diagrammet hver del skal plasseres.
I diagrammet ovenfor er x lengst ut fra midten, siden explode
-verdien er større enn for de andre delene. shadow
-attributtet legger til en skygge til diagrammet, mens autopct
viser den relative prosentandelen hver del representerer.
#3. Opprette et histogram
Med et histogram bruker vi en rekke intervaller for å representere verdiområdet på x-aksen. Y-aksen vil derimot representere frekvensen.
I motsetning til de andre plottene krever plotting av et histogram i Matplotlib noen forhåndsdefinerte trinn:
- Lag en serie med intervaller fra verdiene dine. Du kan bruke funksjonen
np.random.normal()
som kan generere tilfeldige verdier. - Fordel verdiene i et utvalg intervaller.
- Tell antall verdier som faller innenfor hvert intervall.
- Bruk funksjonen
matplotlib.pyplot.hist()
for å lage histogrammet.
Funksjonen hist()
aksepterer flere parametere, inkludert:
x
– En sekvens av verdier (array)bins
– Valgfri parameter som representerer intervallene for variabler. Dette kan være et tall eller en sekvens.range
– Definerer øvre og nedre verdi for intervallene.align
– Kontrollerer justeringen av histogrammet. Venstre, høyre eller midten.color
– Definerer fargen på stolpene.rwidth
– Setter relativ bredde på stolpene i histogrammet.log
– Definerer logaritmisk skala på aksen til histogrammet.
Følgende eksempel viser hvordan du kan plotte et histogram med definerte verdier.
from matplotlib import pyplot as plt x = [22, 40, 87, 5, 43, 30, 56,73, 55, 54, 11, 20, 51, 5, 50, 60, 70, 80] plt.hist(x) plt.title('Histogram plot example') plt.xlabel('x axis') plt.ylabel('frequency') plt.show()
Resultat:
Utdata av histogram i Matplotlib
#4. Linjediagram i Matplotlib
Matplotlib bruker sitt underbibliotek pyplot
, som inneholder diverse funksjoner som hjelper med implementering av plot.
Vi bruker funksjonen plot()
, en generell funksjon for å lage linjediagrammer og andre linjerelaterte plottyper, som buede plott og plott med flere linjer. Hvordan disse plottene ser ut, avhenger av verdiene du sender inn til y-aksen.
Når du skal plotte, må du importere både matplotlib.pyplot
og Numpy
. Metoden plot(x,y)
lager linjediagram ved å sende tilfeldige verdier til x- og y-argumentene.
Du kan også sende en label
-variabel for å merke plottet. Funksjonen title
setter plottets tittel, og funksjonene xlabel
og ylabel
setter navn på aksene. Funksjonen show()
viser til slutt plottet.
Eksempel:
import matplotlib.pyplot as plt import numpy as np x = np.linspace(0, 5, 10) y = 3*x + 2 plt.title('Line plot example') plt.xlabel('x axis') plt.ylabel('y axis') plt.plot(x, y) plt.show()
Resultat:
Utdata av linjediagram i Matplotlib
Attributtet np.linspace
returnerer et sett med jevnt fordelte tall innenfor et definert intervall. Dette gir en liste med 10 verdier i området mellom 0 og 5. Y-verdiene er basert på en ligning som bruker de tilsvarende x-verdiene.
Opprette spredningsdiagrammer
Matplotlib bruker scatter()
-metoden for å lage dette plottet.
Denne metoden aksepterer følgende parametere:
matplotlib.pyplot.scatter(x_axis_data, y_axis_data, s=None, c=None, marker=None, cmap=None, vmin=None, vmax=None, alpha=None, linewidths=None, edgecolors=None)
Parametrene x_axis_data
og y_axis_data
må ikke være tomme, i motsetning til de andre parameterne, som er valgfrie og har None
som standardverdi. Argumentet x_axis_data
definerer en liste med data for x-aksen, mens y_axis_data
definerer en liste med data for y-aksen.
Eksempel på et spredningsdiagram i Matplotlib:
import matplotlib.pyplot as plt x =[15, 17, 18, 27, 22, 27, 32, 14, 11, 12, 29, 16] y =[19, 16, 17, 18, 10, 26, 13, 27, 14, 18, 17, 35] plt.title('Scatter plot example') plt.xlabel('x variable') plt.ylabel('y variable') plt.scatter(x, y, c ="green") # To show the plot plt.show()
Resultatet vil se slik ut:
Utdata av spredningsdiagram i Matplotlib
Hva er subplot() i Matplotlib
Funksjonen subplot()
kan brukes for å tegne flere plot i samme Matplotlib-figur. Dette gjør det mulig å vise og sammenligne ulike plot i en og samme figur.
Denne funksjonen returnerer en tuppel med tre argumenter: antall rader og kolonner som henholdsvis første og andre argument, og indeks for det aktuelle plottet som tredje argument.
Antall rader og kolonner definerer utformingen av Matplotlib-figuren.
For eksempel vil plt.subplot(2, 1, 1)
plotte en Matplotlib-figur med to rader og én kolonne, og dette plottet vil være det første i figuren.
plt.subplot(2, 1, 2)
vil på den andre siden vise det andre plottet med to rader og én kolonne.
Plotting av disse to plottene vil plassere dem over hverandre, som i eksemplet nedenfor.
import matplotlib.pyplot as plt import numpy as np #plot 1: x = np.array([2, 4, 6, 8]) y = np.array([3, 6, 9, 12]) plt.subplot(2, 1, 1) plt.plot(x,y) #plot 2: x = np.array([3, 6, 9, 12]) y = np.array([1, 2, 3, 4]) plt.subplot(2, 1, 2) plt.plot(x,y) plt.show()
Resultatet fra eksemplet over vil se ut som på bildet under.
La oss se et annet eksempel og bruke funksjonen subplot
til å plotte to figurer med én rad og to kolonner. Dette vil vise plottene ved siden av hverandre.
import matplotlib.pyplot as plt import numpy as np #plot 1: x = np.array([2, 4, 6, 8]) y = np.array([3, 6, 9, 12]) plt.subplot(1, 2, 1) plt.plot(x,y) #plot 2: x = np.array([3, 6, 9, 12]) y = np.array([1, 2, 3, 4]) plt.subplot(1, 2, 2) plt.plot(x,y) plt.show()
Eksemplet over viser følgende resultat.
Vel, det var ganske interessant og interaktivt, hva synes du?😃
Siste ord
Matplotlib er et kjent visualiseringsbibliotek i Python. Interaktiviteten og brukervennligheten, selv for nybegynnere, gjør det til et svært godt verktøy for plotting i Python.
Denne artikkelen har dekket eksempler på ulike plot som funksjonene i Matplotlib kan lage, inkludert sektordiagrammer, stolpediagrammer, histogrammer og spredningsdiagrammer.
Python har selvfølgelig mange andre biblioteker som maskinlæringseksperter og dataforskere kan bruke for å lage visualiseringer.
Du kan utforske flere plottyper som du kan lage med Matplotlib, og hvilke funksjoner som benyttes for å skape de ulike plottene.
Lykke til med plotting!📉📊