Python

Heatmaps og Colorbars i Matplotlib

Heatmaps og Colorbars i Matplotlib
Datavisualisering er et av de viktigste trinnene i datavitenskap (eller annen vitenskap for den saks skyld). Vi som mennesker er dårlige til å gi mening om rader og rader med tall. Derfor er det alltid nyttig å ha et verktøy som Matplotlib for å hjelpe oss med å utvikle en visuell intuisjon av hva som skjer når for eksempel en maskinlæringsalgoritme klassifiserer store mengder data.

Mens grafer som viser forholdet mellom to variabler som høyde og vekt, enkelt kan plottes på en flatskjerm som vist nedenfor, blir ting veldig rotete når vi har mer enn to parametere.

Det er da folk prøver å bytte til 3D-plott, men disse er ofte forvirrende og klumpete, som beseirer hele formålet med datavisualisering. Vi trenger varmekart for grafikk.

Hva er varmekart?

Hvis du ser på bildet fra et termisk kamera, kan du se en bokstavelig varmekart. Varmekamera representerer forskjellig temperatur som forskjellige farger. Fargeskjemaet appellerer til vår intuisjon om at rød er en “varm farge” og tar blått og svart for å representere kalde overflater.

Denne synet på mars er et veldig godt eksempel der de kalde områdene er blåfarge mens de varmere områdene stort sett er røde og gule. Fargelinjen i bildet viser hvilken farge som representerer hvilken temperatur.

Ved hjelp av matplotlib kan vi assosiere et punkt (x, y) på grafen med en bestemt farge som representerer variabelen som vi prøver å visualisere. Det trenger ikke være temperatur, det kan være en hvilken som helst annen variabel. Vi vil også vise en fargelinje ved siden av den for å indikere brukerne hva forskjellige farger betyr.

Ofte ser du folk som nevner fargekart i stedet for varmekart. Disse brukes ofte om hverandre. Colormap er et mer generisk begrep.

Installere og importere Matplotlib og relaterte pakker

For å komme i gang med Matplotlib må du sørge for at du har Python (helst Python 3 og pip) installert. Du trenger også bedøvet, skumle og pandaer å jobbe med datasett. Siden vi skal tegne en enkel funksjon, bare to av pakkene bedøvet og matplotlib vil være nødvendig.

$ pip install matplotlib numpy
#eller hvis du har både python to og tre installert
$ pip3 installer matplotlib numpy

Når du har installert bibliotekene, må du sørge for at de importeres i pythonprogrammet ditt.

importer nummen som np
importer matplotlib.pyplot som plt

Nå kan du bruke funksjonene som leveres av disse bibliotekene ved å bruke syntaks som np.numpyfunction ()og  plt.en eller annen funksjon ().

Noen få eksempler

La oss begynne med å tegne en enkel matematisk funksjon som tar poeng på et plan (deres x- og y-koordinater) og tildeler en verdi til dem. Skjermbildet nedenfor viser funksjonen sammen med plottet.

De forskjellige fargene representerer forskjellige verdier (som angitt av skalaen ved siden av plottet). La oss se på koden som kan brukes til å generere denne.

importer nummen som np
importer matplotlib.pyplot som plt
 
# Matematisk funksjon vi trenger for å plotte
def z_func (x, y):
retur (1 - (x ** 2 + y ** 3)) * np.exp (- (x ** 2 + y ** 2) / 2)
# Sette opp inngangsverdier
x = np.arange (-3.0, 3.0, 0.1)
y = np.arange (-3.0, 3.0, 0.1)
X, Y = np.meshgrid (x, y)
 
# Beregning av utdata og lagring i matrisen Z
Z = z_func (X, Y)
 
im = plt.imshow (Z, cmap = plt.cm.RdBu, omfang = (- 3, 3, 3, -3), interpolering = 'bilinear')
 
plt.fargelinje (im);
 
plt.tittel ('$ z = (1-x ^ 2 + y ^ 3) e ^ - (x ^ 2 + y ^ 2) / 2 $')
 
plt.vise fram()

Det første du må merke er at vi importerer bare matplotlib.pyplot en liten del av hele biblioteket. Siden prosjektet er ganske gammelt, har det samlet seg mange ting opp gjennom årene. For eksempel matplotlib.pyplot var populær på dagen, men er nå bare en historisk relikvie, og det å importere det gir bare mer oppblåsthet i programmet ditt.

Deretter definerer vi den matematiske funksjonen vi ønsker å tegne. Det tar to verdier (x, y) og returnerer den tredje verdien z. Vi har definert funksjonen som ikke har brukt den ennå.

Den neste delen tar oppgaven med å lage en rekke inngangsverdier, vi bruker numpy til det, selv om du kan bruke innebygd område() funksjon for det hvis du vil. Når listen over x- og y-verdier er utarbeidet (fra negativ 3 til 3), beregner vi z-verdien fra den.

Nå som vi har beregnet våre innganger og utganger, kan vi plotte resultatene. De plt.imshow () forteller python at bildet kommer til å være opptatt av Z som er vår outputvariabel. Det står også at det kommer til å bli en fargekart, et cmap, med rødblå (RdBu) Skala som strekker seg fra -3 til 3 på hver akse. De interpolasjon parameter gjør grafen jevnere, kunstig. Ellers vil bildet ditt se ganske pikselert og grovt ut.

På dette tidspunktet er grafen opprettet, bare ikke skrevet ut. Vi legger deretter til fargelinjen på siden for å hjelpe korrelert forskjellige verdier av Z med forskjellige farger og nevne ligningen i tittelen. Disse gjøres trinnvis plt.fargelinje (im) og plt.tittel (…). Til slutt viser vi grafen på skjermen ved å ringe funksjonen.

Gjenbrukbarhet

Du kan bruke strukturen ovenfor for å tegne andre 2D-fargekart. Du trenger ikke engang å holde deg til matematiske funksjoner. Hvis du har store matriser med data i filsystemet ditt, kanskje informasjon om en viss demografi, eller andre statistiske data, kan du plugge det ved å endre X, Y verdier uten å endre fargekart-delen.

Håper du fant denne artikkelen nyttig, og hvis du liker lignende innhold, gi oss beskjed.

OpenTTD Tutorial
OpenTTD er et av de mest populære forretningssimuleringsspillene der ute. I dette spillet må du lage en fantastisk transportvirksomhet. Du begynner im...
SuperTuxKart for Linux
SuperTuxKart er en flott tittel designet for å gi deg Mario Kart-opplevelsen gratis på Linux-systemet ditt. Det er ganske utfordrende og morsomt å spi...
Kjemp om Wesnoth-opplæringen
Kampen om Wesnoth er et av de mest populære open source-strategispillene du kan spille på dette tidspunktet. Ikke bare har dette spillet vært i utvikl...