Python

Heatmaps og Colorbars i Matplotlib

Heatmaps og Colorbars i Matplotlib
Datavisualisering er et af de mest afgørende trin i datavidenskab (eller enhver anden videnskab for den sags skyld). Vi, som mennesker, er dårlige til at forstå rækker og rækker med tal. Derfor er det altid nyttigt at have et værktøj som Matplotlib til at hjælpe os med at udvikle en visuel intuition af, hvad der foregår, når f.eks. En maskinlæringsalgoritme klassificerer store mængder data.

Mens grafer, der viser forholdet mellem to variabler som højde og vægt, let kan plottes på en flad skærm som vist nedenfor, bliver tingene virkelig rodet, når vi har mere end to parametre.

Det er når folk prøver at skifte til 3D-plot, men disse er ofte forvirrende og klodset, hvilket besejrer hele formålet med datavisualisering. Vi har brug for heatmaps til visuals.

Hvad er heatmaps?

Hvis du ser på billedet fra et termisk kamera, kan du se et bogstaveligt varmekort. Varmekamera repræsenterer forskellige temperaturer som forskellige farver. Farveskemaet appellerer til vores intuition, at rød er en “varm farve” og tager blå og sort for at repræsentere kolde overflader.

Denne opfattelse af mars er et rigtig godt eksempel, hvor de kolde områder er blå i farve, mens de varmere regioner stort set er røde og gule. Farvebjælken i billedet viser, hvilken farve der repræsenterer hvilken temperatur.

Ved hjælp af matplotlib kan vi associere med et punkt (x, y) på grafen med en bestemt farve, der repræsenterer den variabel, som vi prøver at visualisere. Det behøver ikke at være temperatur, det kan være en hvilken som helst anden variabel. Vi viser også en farvebjælke ved siden af ​​den for at angive brugerne, hvad forskellige farver betyder.

Ofte ville du se folk nævne colormaps i stedet for heatmaps. Disse bruges ofte om hverandre. Colormap er et mere generisk udtryk.

Installation og import af Matplotlib og relaterede pakker

For at komme i gang med Matplotlib skal du sørge for at have Python (helst Python 3 og pip) installeret. Du får også brug for bedøvet, scipy og pandaer at arbejde med datasæt. Da vi planlægger en simpel funktion, kun to af pakkerne bedøvet og matplotlib bliver nødvendige.

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

Når du har installeret bibliotekerne, skal du sørge for, at de importeres til dit python-program.

importer numpy som np
importer matplotlib.pyplot som plt

Nu kan du bruge de funktioner, der leveres af disse biblioteker, ved hjælp af syntaks som np.numpyfunction ()og  plt.en eller anden funktion ().

Et par eksempler

Lad os starte med at tegne en simpel matematisk funktion, der tager point på et plan (deres x- og y-koordinater) og tildeler dem en værdi. Skærmbilledet nedenfor viser funktionen sammen med plottet.

De forskellige farver repræsenterer forskellige værdier (som angivet af skalaen ved siden af ​​plottet). Lad os se på koden, der kan bruges til at generere dette.

importer numpy som np
importer matplotlib.pyplot som plt
 
# Matematisk funktion, vi skal plotte
def z_func (x, y):
returnere (1 - (x ** 2 + y ** 3)) * np.exp (- (x ** 2 + y ** 2) / 2)
# Opsætning af inputværdier
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 af output og lagring af det i array Z
Z = z_func (X, Y)
 
im = plt.imshow (Z, cmap = plt.cm.RdBu, omfang = (- 3, 3, 3, -3), interpolation = 'bilinear')
 
plt.farvebjælke (im);
 
plt.titel ('$ z = (1-x ^ 2 + y ^ 3) e ^ - (x ^ 2 + y ^ 2) / 2 $')
 
plt.at vise()

Den første ting at bemærke er, at vi bare importerer matplotlib.pyplot en lille del af hele biblioteket. Da projektet er ret gammelt, har det akkumuleret mange ting gennem årene. For eksempel matplotlib.pyplot var populær tilbage på dagen, men er nu bare en historisk relikvie, og ved at importere det tilføjes bare mere opblussen til dit program.

Dernæst definerer vi den matematiske funktion, som vi ønsker at tegne. Det tager to værdier (x, y) og returnerer den tredje værdi z. Vi har defineret funktionen, der ikke har brugt den endnu.

Det næste afsnit påtager sig opgaven med at oprette en række inputværdier, vi bruger bedøvet til det, selvom du kan bruge indbygget rækkevidde() funktion til det, hvis du vil. Når listen over x- og y-værdier er udarbejdet (fra negativ 3 til 3), beregner vi z-værdien ud fra den.

Nu hvor vi har beregnet vores input og output, kan vi plotte resultaterne. Det plt.imshow () fortæller python, at billedet vil være bekymret med Z, som er vores outputvariabel. Det siger også, at det bliver en farvekort, en cmap, med rødblå (RdBu) Skala, der strækker sig fra -3 til 3 på begge akser. Det interpolation parameter gør grafen glattere, kunstigt. Ellers ville dit billede se ret pixeleret og groft ud.

På dette tidspunkt oprettes grafen, bare ikke udskrevet. Vi tilføjer derefter farvebjælken på siden for at hjælpe korrelerede forskellige værdier af Z med forskellige farver og nævne ligningen i titlen. Disse udføres trinvis plt.farvebjælke (im) og plt.titel (…). Endelig viser kaldet til funktionen os grafen på skærmen.

Genanvendelighed

Du kan bruge ovenstående struktur til at tegne enhver anden 2D-farvekort. Du behøver ikke engang at holde fast ved matematiske funktioner. Hvis du har enorme matrixer med data i dit filsystem, måske oplysninger om en bestemt demografi eller andre statistiske data, kan du tilslutte det ved at ændre X, Y værdier uden at ændre sektionen med farvekort.

Håber du fandt denne artikel nyttig, og hvis du kan lide lignende indhold, så lad os det vide.

Sådan vises FPS-tæller i Linux-spil
Linux-spil fik et stort skub, da Valve annoncerede Linux-support til Steam-klient og deres spil i 2012. Siden da har mange AAA- og indiespil fundet ve...
Sådan downloades og afspilles Sid Meiers Civilization VI på Linux
Introduktion til spillet Civilization 6 er et moderne udtryk for det klassiske koncept, der blev introduceret i serien af ​​Age of Empires-spil. Ideen...
Sådan installeres og afspilles Doom på Linux
Introduktion til undergang Doom-serien opstod i 90'erne efter frigivelsen af ​​den originale Doom. Det var et øjeblikkeligt hit, og fra den tid af har...