Matplotlib Farbkodierung von Werten

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
g123
User
Beiträge: 25
Registriert: Donnerstag 11. Januar 2018, 15:36

Hey Leute!
Habe ein Paar listen mit Werten vorliegen.
Ich habe im ersten schritt, aus jedem dieser Listen einen Graph erstellt.
Im zweiten Schritt möchte ich, mittels Farbkodierung alle Listen darstellen. Und das so:
Jeder Vertikaler "Pixel" bzw "Einheit" Soll eine Liste sein, hohe Werte sollen zb eine Helle Farbe sein und niedrige eine dunkle, und dann möchte ich die listen einander Reihen. Ähnlich wie Bei einem B-Scan.
Habt ihr eine Idee wie so etwas machbar ist und ob es überhaupt machbar ist mit matplotlib?
Benutzeravatar
noisefloor
User
Beiträge: 3829
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

das liest sich alles sehr kryptisch bis unverständlich... Was hast zu z.B. für eine Graphen bis jetzt gezeichnet? Linie? Balken? Donut? ...? Und was heißt "Jeder Vertikaler "Pixel" bzw "Einheit" Soll eine Liste sein,"? Hast du mal ein Beispiel?

Ansonsten: auf der Seite https://matplotlib.org/gallery/index.html findest du ein breites Spektrum an Beispielen, was Matplotlib so kann, inkl. einigen "exotischen" Darstellungen. Im Beispiel "Gradient Bar" wird dargestellt, wie man Farbgradienten in einem Balkendiagramm hin bekommt.

Gruß, noisefloor
Benutzeravatar
MagBen
User
Beiträge: 799
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

Kann es sein, dass du ein 2D-Array plotten möchtest?
Die Werte Farbcodiert wie die Höhenwerte bei einer Landkarte?
z.B. so:
Bild
oder so
Bild
a fool with a tool is still a fool, www.magben.de, YouTube
g123
User
Beiträge: 25
Registriert: Donnerstag 11. Januar 2018, 15:36

Hey Leute ! Hab mal wieder überstürzt gefragt , ich bin jetzt mittlerweile zu einem Ergebnis gekommen.
Also ich probier es nochmal zu erklären, ich glaub @magben hat mich verstanden.
So habe einige Listen: A=[a1,a2,a3,a4,a5], B=[b1,b2,b3...],... usw.. die möchte ich dann in einem Diagramm haben in der Form:

|a1b1
|a2b2
|a3b3
|a4b4
|___________Anstatt der Werte eine Farbe zu ordnen.

So mein Vorgehen:
Np Array erstellt und erstmal per Hand ein paar listen hinzugefügt, dann die Array Transponiert und mit plt.Imshow dargestellt.

So mein letztes Problem: wie kann ich Automatisch mit einer For Schleife die ganzen liste durchgehen und dem np array als neue "Zeile" hinzufügen?
Ich kann auch nicht vorher sagen wie viele Listen es sein werden, weil die Anzahl immer unterschiedlich ist.

Hat einer ne Idee?
Sirius3
User
Beiträge: 17703
Registriert: Sonntag 21. Oktober 2012, 17:20

@g123: am besten, Du zeigst was Du versucht hast. Generell muß man eigentlich gar nichts machen:

Code: Alles auswählen

plt.imshow([A, B, C])
g123
User
Beiträge: 25
Registriert: Donnerstag 11. Januar 2018, 15:36

Code: Alles auswählen


B = np.absolute(np.array([DF["Ort1"]["aufnahmen"][2],
              DF["Ort2"]["aufnahmen"][3],
              DF["Ort3"]["aufnahmen"][2]]))

plt.figure(1)
plt.imshow(B.T,cmap="Reds")
plt.colorbar()

DF ist mein dict. Er besteht aus mehreren Orten, diese haben jeweils 5 Listen mit 10000 integern.
So jetzt habe ich noch alles per hand in den numpy array reingeschrieben. So jetzt würde ich gerne als nächstes das ganze automatisch den numpy array ausfüllen lassen.
Ich möchte über die Orte iterieren und dann auch jeweils über die 5 Listen an jedem Ort, jedoch hab ich noch nicht verstanden wie ich einen numpy array mittels for schleife ausfülle.
Sirius3
User
Beiträge: 17703
Registriert: Sonntag 21. Oktober 2012, 17:20

@g123: als ersten Schritt füllt man eine Liste per for-Schleife.
g123
User
Beiträge: 25
Registriert: Donnerstag 11. Januar 2018, 15:36

ja aber ich will ja einen 2d numpy array füllen und das bereitet mir Probleme, jede liste mit der ich den 2d-numpy array fülle soll eine neue zeile sein..
ich weiß aber vorher nicht wie die Dimension vom numpy array ist und auch nicht wie ich einen numpy array fülle?
Sirius3
User
Beiträge: 17703
Registriert: Sonntag 21. Oktober 2012, 17:20

@g123: kein Numpy-Array sondern eine Liste. Zweiter Schritt: Liste in Array umwandeln.
g123
User
Beiträge: 25
Registriert: Donnerstag 11. Januar 2018, 15:36

@Sirius3 Danke !!!!!
So hat geklappt, jetzt noch eine letzte Frage: Meine Listen sind sehr lang, jedoch habe ich nicht so viele Listen, deshalb sieht mein Bild ziemlich schmal aus, weiß einer wie ich das breiter machen kann?

Bild
Sirius3
User
Beiträge: 17703
Registriert: Sonntag 21. Oktober 2012, 17:20

Das Stichwort ist "aspect ratio".
Antworten