Pytonorm

Heatmaps och Colorbars i Matplotlib

Heatmaps och Colorbars i Matplotlib
Datavisualisering är ett av de viktigaste stegen i datavetenskap (eller någon annan vetenskap för den delen). Vi som människor är dåliga när det gäller att förstå rader och rader med siffror. Det är därför det alltid är bra att ha ett verktyg som Matplotlib för att hjälpa oss att utveckla en visuell intuition av vad som händer när, till exempel, en maskininlärningsalgoritm klassificerar stora mängder data.

Medan diagram som visar förhållandet mellan två variabler som höjd och vikt enkelt kan plottas på en platt skärm som visas nedan, blir det riktigt rörigt när vi har mer än två parametrar.

Det är då människor försöker byta till 3D-tomter, men dessa är ofta förvirrande och klumpiga vilket besegrar hela syftet med datavisualisering. Vi behöver värmekartor för visuella bilder.

Vad är värmekartor?

Om du tittar på bilden från en värmekamera kan du se en bokstavlig värmekarta. Värmekamera representerar olika temperaturer som olika färger. Färgschemat tilltalar vår intuition att rött är en “varm färg” och tar blått och svart för att representera kalla ytor.

Denna syn på mars är ett riktigt bra exempel där de kalla regionerna har blå färg medan de varmare regionerna till stor del är röda och gula. Färgfältet i bilden visar vilken färg som representerar vilken temperatur.

Med hjälp av matplotlib kan vi associera med en punkt (x, y) i diagrammet med en specifik färg som representerar variabeln som vi försöker visualisera. Det behöver inte vara temperatur, det kan vara någon annan variabel. Vi visar också en färgfält bredvid den för att ange användarna vad olika färger betyder.

Ofta skulle du se människor som nämner färgkartor istället för värmekartor. Dessa används ofta omväxlande. Colormap är en mer generisk term.

Installera och importera Matplotlib och relaterade paket

För att komma igång med Matplotlib, se till att du har Python (helst Python 3 och pip) installerat. Du kommer också att behöva bedövad, läskig och pandor att arbeta med datamängder. Eftersom vi ska plotta en enkel funktion, bara två av paketen bedövad och matplotlib kommer att bli nödvändiga.

$ pip installera matplotlib numpy
# eller om du har både python två och tre installerade
$ pip3 installera matplotlib numpy

När du har installerat biblioteken måste du se till att de importeras till ditt pythonprogram.

importera numpy som np
importera matplotlib.pyplot som plt

Nu kan du använda de funktioner som tillhandahålls av dessa bibliotek genom att använda syntax som np.numpyfunction ()och  plt.någon annan funktion ().

Några exempel

Låt oss börja med att plotta en enkel matematisk funktion som tar poäng på ett plan (deras x- och y-koordinater) och tilldelar dem ett värde. Skärmdumpen nedan visar funktionen tillsammans med handlingen.

De olika färgerna representerar olika värden (som anges av skalan bredvid diagrammet). Låt oss titta på koden som kan användas för att generera detta.

importera numpy som np
importera matplotlib.pyplot som plt
 
# Matematisk funktion vi behöver plotta
def z_func (x, y):
returnera (1 - (x ** 2 + y ** 3)) * np.exp (- (x ** 2 + y ** 2) / 2)
# Ställa in ingångsvärden
x = np.arange (-3.0, 3.0, 0.1)
y = np.arange (-3.0, 3.0, 0.1)
X, Y = np.nätnät (x, y)
 
# Beräkna utmatningen och lagra den i matrisen Z
Z = z_func (X, Y)
 
im = plt.imshow (Z, cmap = plt.centimeter.RdBu, utsträckning = (- 3, 3, 3, -3), interpolation = 'bilinear')
 
plt.colorbar (im);
 
plt.titel ('$ z = (1-x ^ 2 + y ^ 3) e ^ - (x ^ 2 + y ^ 2) / 2 $')
 
plt.show()

Det första man ska märka är att vi importerar bara matplotlib.pyplot en liten del av hela biblioteket. Eftersom projektet är ganska gammalt har det samlats många saker genom åren. Till exempel matplotlib.pyplot var populärt tillbaka på dagen men är nu bara en historisk relik och att importera det ger bara mer uppblåsthet i ditt program.

Därefter definierar vi den matematiska funktionen som vi vill plotta. Det tar två värden (x, y) och returnerar det tredje värdet z. Vi har definierat funktionen som inte använts ännu.

Nästa avsnitt tar upp uppgiften att skapa en matris med inmatningsvärden, vi använder numpy för det även om du kan använda inbyggnaden räckvidd() fungerar för det om du vill. När listan med x- och y-värden har upprättats (från negativ 3 till 3) beräknar vi z-värdet från den.

Nu när vi har beräknat våra in- och utgångar kan vi plotta resultaten. De plt.imshow () berättar för python att bilden kommer att handla om Z som är vår utgångsvariabel. Det står också att det kommer att bli en färgkarta, en cmap, med rödblå (RdBu) Skala som sträcker sig från -3 till 3 på vardera axeln. De interpolation parametern gör grafen mjukare, artificiellt. Annars skulle din bild se ganska pixelerad och grov ut.

Vid den här tiden skapas grafen, bara inte utskriven. Vi lägger sedan till färgfältet på sidan för att hjälpa korrelerade olika värden på Z med olika färger och nämna ekvationen i titeln. Dessa görs i steg plt.färgfält (im) och plt.titel (…). Slutligen visar vi grafen på skärmen genom att ringa funktionen.

Återanvändbarhet

Du kan använda ovanstående struktur för att plotta alla andra 2D-färgkartor. Du behöver inte ens hålla fast vid matematiska funktioner. Om du har enorma matriser med data i ditt filsystem, kanske information om en viss demografi eller någon annan statistisk data kan du ansluta det genom att ändra X, Y värden utan att ändra färgbildsektionen.

Hoppas du tyckte att den här artikeln var användbar och om du gillar liknande innehåll, låt oss veta.

Bästa kommandoradsspel för Linux
Kommandoraden är inte bara din största allierade när du använder Linux, det kan också vara källan till underhållning eftersom du kan använda den för a...
Bästa Gamepad Mapping Apps för Linux
Om du gillar att spela spel på Linux med en gamepad istället för ett typiskt tangentbord och musinmatningssystem, finns det några användbara appar för...
Användbara verktyg för Linux-spelare
Om du gillar att spela spel på Linux är chansen att du kan ha använt appar och verktyg som Wine, Lutris och OBS Studio för att förbättra spelupplevels...