Heatmap. aus Datei

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
wew6111
User
Beiträge: 1
Registriert: Donnerstag 12. Juni 2014, 16:40

Guten Tag,

ich habe drei Spalten in einem Datei-File, die so aussehen:

1.144252756 -4.226753460 0.676000000
1.186632490 -4.216641950 0.683000000
1.229012223 -4.213295900 0.686000000
...

ich möchte ein Heatmap-Diagramm erstellen. Dritte Spalte möchte ich als Farbkoordinate benutzen.

ich habe dieses Code versucht zu verwenden, aber kein Ergebnis

Code: Alles auswählen

import numpy as np
import matplotlib.pyplot as plt
file = np.loadtxt('file.txt')
x, y, z = file[: , 0], file[:, 1], file[:, 2]
heatmap, xedges, yedges = np.histogram2d(x, y)
extent = [0, -1, 0, -1]
plt.colorbar(z, orientation = 'vertical')
plt.imshow(heatmap, extent=extent, origin ='lower')
plt.show()
Könntet ihr mir vielleicht helfen?
Zuletzt geändert von Anonymous am Montag 16. Juni 2014, 23:50, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
BlackJack

@wew6111: Was heisst kein Ergebnis denn genau? Irgend etwas wird doch angezeigt. Sehen denn die Daten für die Anzeige so aus wie Du das erwarten würdest?

`x`, `y`, und `z` kann man übrigens einfacher bestimmen wenn man das `unpack`-Argument von `numpy.loadtxt()` verwendet.
Benutzeravatar
MagBen
User
Beiträge: 799
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

Wegen dem File-IO ist Dein Code nicht out-of-the-box lauffähig, ich habe den Code deshalb leicht verändert:

Code: Alles auswählen

import numpy as np
import matplotlib.pyplot as plt
#file = np.loadtxt('file.txt')
#x, y, z = file[: , 0], file[:, 1], file[:, 2]
x = np.linspace(0,2,101)
y = np.linspace(0,2,101)
z = np.linspace(0,2,101)
heatmap, xedges, yedges = np.histogram2d(x, y)
extent = [0, -1, 0, -1]
plt.imshow(heatmap, extent=extent, origin ='lower')
plt.colorbar(orientation = 'vertical')
plt.show()
Dein Problem war die falsche Benutzung von plt.colorbar (und dass Du die Fehlermeldung nicht gepostet hast). Du darfst z nicht an die Colorbar übergeben, eine colorbar parametriert man anders, aber erstmal reichen die Default-Einstellungen, damit die greifen muss colorbar nach imshow aufgerufen werden.

Jetzt hast Du natürlich das Problem, dass Du Dir überlegen musst wo Du das z benutzen kannst (auf jeden Fall nicht komplett an die colorbar übergeben).

Ein weiterer Trick beim Umgang mit matplotlib:
Wenn eine Option nicht so funktioniert wie Du Dir das vorstellst (z.B. colorbar) und eine Exception wirft, dann kommentiere die Zeile einfach aus, wenn es dann geht, dann weist Du wenigstens, dass der Rest funktioniert.
a fool with a tool is still a fool, www.magben.de, YouTube
Antworten