Heatmaps and Colorbars in Matplotlib

Heatmaps and Colorbars in Matplotlib
Datavisualisering er et av de mest avgjørende trinnene i datavitenskap (eller annen vitenskap, for den saks skyld). Vi som mennesker er fattige 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 enorme mengder data.

Mens grafer som viser sammenheng 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 parameter.

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 visuals.

Hva er varmekart?

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

Dette synet på Mars er et veldig godt eksempel der de kalde regionene er blå i fargen, mens de varmere regionene stort sett er røde og gule. Fargelinjen i bildet viser hvilken farge som representerer hvilken temperatur.

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

Ofte vil du se folk som nevner kolormaps 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å numpy, Scipy og Pandas å jobbe med datasett. Siden vi skal plotte en enkel funksjon, er det bare to av pakkene numpy og Matplotlib kommer til å være nødvendig.

$ pip install matplotlib numpy
#Eller hvis du har begge Python to og tre installert
$ pip3 installer matplotlib numpy

Når du har installert bibliotekene, må du sørge for at de er importert i Python -programmet ditt.

Importer numpy 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.noen annenfunksjon ().

Noen få eksempler

La oss starte med å plotte en enkel matematisk funksjon som tar punkter på et fly (deres X- og Y -koordinater) og tildeler dem en verdi til dem. Skjermbildet nedenfor viser funksjonen sammen med plottet.

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

Importer numpy som NP
Importer matplotlib.Pyplot som Plt
# Matematisk funksjon vi trenger å plotte
def z_func (x, y):
Return (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 utgangen og lagring av den i matrisen Z
Z = z_func (x, y)
im = plt.IMshow (Z, CMAP = PLT.CM.Rdbu, omfang = ( -3, 3, 3, -3),
Interpolation = 'bilinear')
plt.Colorbar (IM)
plt.tittel ('$ z = (1-x^2+y^3) e^-(x^2+y^2)/2 $')
plt.forestilling()

Den første tingen å legge merke til er at vi importerer bare matplotlib.Pyplot en liten del av hele biblioteket. Siden prosjektet er ganske gammelt, har det mange ting akkumulert gjennom årene. For eksempel matplotlib.Pyplot var populær tilbake på dagen, men er nå bare en historisk relikv.

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

Den neste delen tar på seg oppgaven med å lage en rekke inngangsverdier, vi bruker Numpy for det, selv om du kan bruke byggingen inn område() funksjon for det hvis du vil. Når listen over x- og y -verdier er utarbeidet (alt fra negativt 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 utgangsvariabel. Det sier også at det kommer til å bli en Colormap, en CMAP, med rød blå (Rdbu) skala som strekker seg fra -3 til 3 på begge aksene. De Interpolasjon Parameter gjør grafen jevnere, kunstig. Ellers vil bildet ditt se ganske pixelert og grov ut.

På dette tidspunktet opprettes grafen, bare ikke trykt. Vi legger deretter til fargelinjen på siden for å bidra til å korrelere forskjellige verdier av Z med forskjellige farger og nevne ligningen i tittelen. Disse gjøres i trinn plt.Colorbar (IM) og plt.Tittel (...). Til slutt viser funksjonen funksjonen oss grafen på skjermen.

Gjenbruk

Du kan bruke strukturen ovenfor til å plotte alle andre 2D Colormap. Du trenger ikke engang å holde deg til matematiske funksjoner. Hvis du har enorme matriser med data i filsystemet ditt, kanskje informasjon om en viss demografi, eller andre statistiske data, kan du koble til ved å endre X, y Verdier uten å endre Colormap -delen.

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