Erstellen einer Heatmap

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
Element
User
Beiträge: 4
Registriert: Donnerstag 23. April 2015, 15:07

Guten Tag zusammen,

zurzeit versuche ich für ein Hochschulprojekt eine Heatmap zu erstellen. Über Internetrecherche bin ich auf das Modul Matplotlib gestoßen, welches mir viele Möglichkeit aufzeigte.

Unter anderem folgende, welche in diesem Link zu finden ist:

http://matplotlib.org/examples/pylab_ex ... nterp.html

Source code:

Code: Alles auswählen

from pylab import *
A = rand(5,5)
figure(1)
imshow(A, interpolation='nearest')
grid(True)

figure(2)
imshow(A, interpolation='bilinear')
grid(True)

figure(3)
imshow(A, interpolation='bicubic')
grid(True)

show()
Ich verstehe den Source Code.

Jedoch muss ich ihn leicht anpassen. Zum einen brauch ich anstatt zufällige Farben (rand() - Befehl) selber bestimmte. Nämlich für meine Excel-Werte die 0 sind die Farbe grün und für die Werte welche in Richtung +/- 3 gehen immer roter. Im Anschluss sollen die Werte von den verschiedenen Messpunkten interpoliert werden, was das Programm ja schon macht.

Was mir momentan also fehlt ist:

- Die Farben an bestimmte Stellen zuweisen

- Die Farbe selbst bestimmen

Ich vermute das ich hier ein sehr banales Problem habe. Jedoch bin ich über Foren und Youtube bisher leider nicht weiter gekommen :/

Für Anregungen und Hilfe wäre ich sehr dankbar

Liebe Grüße

Stefan
Zuletzt geändert von Anonymous am Donnerstag 23. April 2015, 15:45, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
BlackJack

@Element: Eine Farbtabelle kann man mit dem `cmap`-Argument festlegen. Musst mal schauen ob es eine für Deine Zwecke passende fertig gibt, ansonsten musst Du Dir eine erstellen. Dann müsstest Du noch -3 und 3 als `vmin` und `vmax` und die pasenden Daten übergeben damit die Farben richtig aus der Farbtabelle ausgewählt werden.
Benutzeravatar
MagBen
User
Beiträge: 799
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

Element hat geschrieben:Zum einen brauch ich anstatt zufällige Farben (rand() - Befehl) selber bestimmte.
Du plottest den Inhalt der Matrix A. Du müsstest also A mit sinnvollen Werten füllen.
Element hat geschrieben:Die Farbe selbst bestimmen
Hier hast Du eine Übersicht, der in Matplotlib eingebauten Farbverläufe: http://matplotlib.org/examples/color/co ... rence.html. Außerdem hast Du noch die Möglichkeit Farbverläufe selbst zu definieren.

imshow() ist zum Anzeigen von Bildern, ich würde es nicht dafür benutzen um Daten anzuzeigen. Auch würde ich mir gut überlegen, ob Du Deine Daten verändert geplottet haben möchtest (interpoliert). Zum Plotten von 2D Daten empfehle ich Dir die Funktion pcolor() oder pcolormesh(): http://matplotlib.org/examples/pylab_ex ... _demo.html
a fool with a tool is still a fool, www.magben.de, YouTube
Element
User
Beiträge: 4
Registriert: Donnerstag 23. April 2015, 15:07

MagBen hat geschrieben:
Element hat geschrieben:Zum einen brauch ich anstatt zufällige Farben (rand() - Befehl) selber bestimmte.
Du plottest den Inhalt der Matrix A. Du müsstest also A mit sinnvollen Werten füllen.

A = rand(4, 4): Dieser Befehl erzeugt mir ein Quadrat mit 4 Reihen und 4 Spalten. Danach füllt er es mit zufälligen Farben. Könntest du mir ein konkretes Beispiel nennen wie ich z.B sage das der erste Wert oben links im Quadrat rot ist?
Element hat geschrieben:Die Farbe selbst bestimmen
Hier hast Du eine Übersicht, der in Matplotlib eingebauten Farbverläufe: http://matplotlib.org/examples/color/co ... rence.html. Außerdem hast Du noch die Möglichkeit Farbverläufe selbst zu definieren.

imshow() ist zum Anzeigen von Bildern, ich würde es nicht dafür benutzen um Daten anzuzeigen. Auch würde ich mir gut überlegen, ob Du Deine Daten verändert geplottet haben möchtest (interpoliert). Zum Plotten von 2D Daten empfehle ich Dir die Funktion pcolor() oder pcolormesh(): http://matplotlib.org/examples/pylab_ex ... _demo.html
Mein Ziel ist es eine Behaglichkeitskarte zu erstellen. Dafür wird an acht verschiedenen Stellen im Raum der PMV-Wert gemssen. Darauf hin soll zwischen den Messstellen die gemessen Behaglichkeit interpoliert werden. Kann ich mit pcolor() auch Farbverläufe darstellen oder nur die Farbpunkte im Quadrat definieren?
Benutzeravatar
MagBen
User
Beiträge: 799
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

Wenn Du wirklich interpolierte Werte darstellen möchtest, dann ist imshow() die richtige Wahl.
Hier noch ein paar Heatmap Beispiele mit imshow und pcolor: http://nbviewer.ipython.org/github/rasb ... maps.ipynb
a fool with a tool is still a fool, www.magben.de, YouTube
Antworten