Ich möchte eine Heatmap wie diese erstellen (auf FlowingData gezeigt ):
Die Quelldaten sind hier , aber zufällige Daten und Beschriftungen wären in Ordnung zu verwenden, dh
import numpy
column_labels = list('ABCD')
row_labels = list('WXYZ')
data = numpy.random.rand(4,4)
Das Erstellen der Heatmap ist in matplotlib ganz einfach:
from matplotlib import pyplot as plt
heatmap = plt.pcolor(data)
Und ich habe sogar Colormap- Argumente gefunden, die ungefähr richtig aussehen:heatmap = plt.pcolor(data, cmap=matplotlib.cm.Blues)
Darüber hinaus kann ich nicht herausfinden, wie Beschriftungen für die Spalten und Zeilen angezeigt und die Daten in der richtigen Ausrichtung angezeigt werden (Ursprung oben links statt unten links).
Manipulationsversuche heatmap.axes
(z. B. heatmap.axes.set_xticklabels = column_labels
) sind fehlgeschlagen. Was fehlt mir hier?
python
matplotlib
data-visualization
heatmap
Jason Sundram
quelle
quelle
Antworten:
Dies ist spät, aber hier ist meine Python-Implementierung der NBA-Heatmap für fließende Daten.
aktualisiert: 04.01.2014 : Danke an alle
Die Ausgabe sieht folgendermaßen aus:
Es gibt ein ipython Notebook mit all diesen Code hier . Ich habe viel aus dem Überlauf gelernt, also wird dies hoffentlich jemand nützlich finden.
quelle
pcolor
aber das zeigt auch numerische Werte. ODER: Ich möchte eine Matplotlib erstellentable
, die ihre Zellen färbt. Ich habe Lösungen für das andere Problem gesehen und sie sind ästhetisch hässlich. Das sieht gut aus, wenn ich nur wüsste, wie man die Zahlen überlagert.Das Python Seaborn-Modul basiert auf Matplotlib und erstellt eine sehr schöne Heatmap.
Unten finden Sie eine Implementierung mit seaborn, die für das ipython / jupyter-Notebook entwickelt wurde.
Die Ausgabe sieht folgendermaßen aus: Ich habe die Matplotlib Blues-Farbkarte verwendet, finde aber die Standardfarben persönlich sehr schön. Ich habe matplotlib verwendet, um die Beschriftungen der x-Achse zu drehen, da ich die Seaborn-Syntax nicht finden konnte. Wie von grexor festgestellt, war es notwendig, die Abmessungen (fig.set_size_inches) durch Ausprobieren anzugeben, was ich etwas frustrierend fand.
Wie von Paul H bemerkt, können Sie die Werte leicht zu Heatmaps hinzufügen (annot = True), aber in diesem Fall habe ich nicht gedacht, dass dies die Zahl verbessert. Aus der hervorragenden Antwort von joelotz wurden mehrere Codefragmente entnommen.
quelle
Hauptproblem ist, dass Sie zuerst die Position Ihrer x- und y-Ticks festlegen müssen. Außerdem ist es hilfreich, die objektorientiertere Schnittstelle zu matplotlib zu verwenden. Interagiere nämlich
axes
direkt mit dem Objekt.Hoffentlich hilft das.
quelle
heatmap.axes
Immobilie benutzt, die aus irgendeinem Grund nichts tut.ax.xaxis.set_label_position('top')
ohne Erfolg.annot=True
beim Aufruf festlegen ( stanford.edu/~mwaskom/software/seaborn/generated/… )Jemand hat diese Frage bearbeitet, um den von mir verwendeten Code zu entfernen, sodass ich gezwungen war, ihn als Antwort hinzuzufügen. Vielen Dank an alle, die an der Beantwortung dieser Frage teilgenommen haben! Ich denke, die meisten anderen Antworten sind besser als dieser Code. Ich lasse dies hier nur zu Referenzzwecken.
Dank Paul H und Unutbu (der diese Frage beantwortet hat ) habe ich eine ziemlich gut aussehende Ausgabe:
Und hier ist die Ausgabe:
quelle