Python

Heatmaps en kleurenbalken in Matplotlib

Heatmaps en kleurenbalken in Matplotlib
Datavisualisatie is een van de meest cruciale stappen in Data Science (of welke andere wetenschap dan ook). Wij, als mensen, zijn slecht in het begrijpen van rijen en rijen getallen. Daarom is het altijd handig om een ​​hulpprogramma als Matplotlib te hebben om ons te helpen een visuele intuïtie te ontwikkelen van wat er aan de hand is wanneer bijvoorbeeld een machine learning-algoritme enorme hoeveelheden gegevens classificeert.

Hoewel grafieken die de relatie tussen twee variabelen zoals lengte en gewicht laten zien, eenvoudig op een plat scherm kunnen worden geplot, zoals hieronder wordt weergegeven, wordt het echt rommelig als we meer dan twee parameters hebben.

Dat is wanneer mensen proberen over te schakelen naar 3D-plots, maar deze zijn vaak verwarrend en onhandig, wat het hele doel van gegevensvisualisatie tenietdoet. We hebben heatmaps nodig voor visuals.

Wat zijn heatmaps?

Als je naar het beeld van een thermische camera kijkt, zie je een letterlijke heatmap. Warmtebeeldcamera vertegenwoordigt verschillende temperaturen als verschillende kleuren. Het kleurschema spreekt onze intuïtie aan dat rood een 'warme kleur' ​​is en blauw en zwart gebruikt om koude oppervlakken weer te geven.

Deze weergave van Mars is een heel goed voorbeeld waar de koude gebieden blauw van kleur zijn, terwijl de warmere gebieden grotendeels rood en geel zijn. De kleurenbalk in de afbeelding laat zien welke kleur voor welke temperatuur staat.

Met matplotlib kunnen we een punt (x,y) in de grafiek associëren met een specifieke kleur die de variabele vertegenwoordigt die we proberen te visualiseren. Het hoeft geen temperatuur te zijn, het kan elke andere variabele zijn. We zullen ook een weergeven kleuren balk ernaast om gebruikers aan te geven wat verschillende kleuren betekenen.

Vaak zie je mensen kleurenkaarten noemen in plaats van heatmaps. Deze worden vaak door elkaar gebruikt. Kleurenkaart is een meer algemene term.

Matplotlib en gerelateerde pakketten installeren en importeren

Om met Matplotlib aan de slag te gaan, moet je ervoor zorgen dat Python (bij voorkeur Python 3 en pip) is geïnstalleerd. Je hebt ook nodig numpy, pittig en panda's werken met datasets. Aangezien we een eenvoudige functie gaan plotten, slechts twee van de pakketten numpy en matplotlib zal nodig zijn.

$ pip install matplotlib numpy
#of als je zowel python twee als drie hebt geïnstalleerd
$ pip3 matplotlib numpy installeren

Nadat u de bibliotheken hebt geïnstalleerd, moet u ervoor zorgen dat ze in uw python-programma zijn geïmporteerd.

importeer numpy als np
matplotlib importeren.pyplot als plt

Nu kunt u de functies gebruiken die door deze bibliotheken worden geleverd door syntaxis te gebruiken zoals np.numpyfunctie()en  plt.een andere functie().

Een paar voorbeelden

Laten we beginnen met het plotten van een eenvoudige wiskundige functie die punten op een vlak neemt (hun x- en y-coördinaten) en er een waarde aan toekent. De onderstaande schermafbeelding toont de functie samen met de plot.

De verschillende kleuren vertegenwoordigen verschillende waarden (zoals aangegeven door de schaal naast de plot). Laten we eens kijken naar de code die kan worden gebruikt om dit te genereren.

importeer numpy als np
matplotlib importeren.pyplot als plt
 
# Wiskundige functie die we moeten plotten
def z_func(x, y):
rendement (1 - (x ** 2 + y ** 3)) * np.exp(-(x ** 2 + y ** 2) / 2)
# Invoerwaarden instellen
x = np.bereik(-3.0, 3.0, 0.1)
y = np.bereik(-3.0, 3.0, 0.1)
X, Y = np.meshraster(x, y)
 
# Berekenen van de output en opslaan in de array Z
Z = z_func(X, Y)
 
im = plt.imshow(Z, cmap=plt.cm.RdBu, omvang=(-3, 3, 3, -3), interpolatie='bilineair')
 
plt.kleurenbalk (im);
 
plt.titel('$z=(1-x^2+y^3) e^-(x^2+y^2)/2$')
 
plt.tonen()

Het eerste dat opvalt, is dat we alleen matplotlib importeren.pyplot een klein deel van de hele bibliotheek. Omdat het project vrij oud is, heeft het in de loop der jaren veel dingen verzameld. Bijvoorbeeld matplotlib.pyplot was vroeger populair, maar is nu slechts een historisch overblijfsel en het importeren ervan voegt alleen maar meer bloat toe aan je programma.

Vervolgens definiëren we de wiskundige functie die we willen plotten. Het heeft twee waarden (x,y) en geeft de derde waarde z. We hebben de functie gedefinieerd die nog niet is gebruikt.

De volgende sectie neemt de taak op zich om een ​​reeks invoerwaarden te maken, daarvoor gebruiken we numpy, hoewel u de ingebouwde bereik() functie ervoor als je wilt. Zodra de lijst met x- en y-waarden is opgesteld (variërend van min 3 tot 3), berekenen we de z-waarde ervan.

Nu we onze inputs en outputs hebben berekend, kunnen we de resultaten plotten. De plt.imshow() vertelt python dat de afbeelding betrekking zal hebben op Z, wat onze uitvoervariabele is. Er staat ook dat het een kleurenkaart gaat worden, een cmap, met Rood Blauw (RdBu)  schaal loopt van -3 tot 3 op beide assen. De interpolatie parameter maakt de grafiek kunstmatig vloeiender. Anders zou je afbeelding er nogal korrelig en grof uitzien.

Op dit punt wordt de grafiek gemaakt, alleen niet afgedrukt. We voegen vervolgens de kleurenbalk aan de zijkant toe om verschillende waarden van Z te correleren met verschillende kleuren en vermelden de vergelijking in de titel. Deze worden in stappen gedaan plt.kleurenbalk (im) en plt.titel (… ). Ten slotte toont het aanroepen van de functie ons de grafiek op het scherm.

Herbruikbaarheid

U kunt de bovenstaande structuur gebruiken om elke andere 2D-kleurenkaart te plotten. Je hoeft je niet eens aan wiskundige functies te houden. Als u enorme hoeveelheden gegevens in uw bestandssysteem hebt, misschien informatie over een bepaalde demografie of andere statistische gegevens, kunt u die aansluiten door de X, Y waarden zonder de kleurenkaartsectie te wijzigen.

Ik hoop dat je dit artikel nuttig vond en als je van vergelijkbare inhoud houdt, laat het ons dan weten.

Hoe Xdotool te gebruiken om muisklikken en toetsaanslagen in Linux te stimuleren
Xdotool is een gratis en open source opdrachtregelprogramma voor het simuleren van muisklikken en toetsaanslagen. Dit artikel behandelt een korte hand...
Top 5 ergonomische computermuisproducten voor Linux
Veroorzaakt langdurig computergebruik pijn in uw pols of vingers?? Heb je last van stijve gewrichten en moet je constant de hand schudden?? Voelt u ee...
Hoe de muis- en touchpad-instellingen te wijzigen met Xinput in Linux
De meeste Linux-distributies worden standaard geleverd met de bibliotheek "libinput" om invoergebeurtenissen op een systeem af te handelen. Het kan in...