Scatterplot mit pyplot: Farben und labels

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
Tyrax
User
Beiträge: 73
Registriert: Mittwoch 4. Februar 2009, 18:31

Hallo,

ich gucke mir gerade pyplot an und bin auf ein Problem gestoßen, dass ich trotz googlen und selberdenken (sic!) nicht zufriedenstellend gelöst bekomme:

Ich habe einen numpy.array mit n Zeilen und m>2 Spalten. Ich will nun die zweite Spalte gegen die erste plotten und die Datenpunkte anhand einer anderen Spalte einfärben. Das geht zum Beispiel so:

Code: Alles auswählen

import numpy as np
import matplotlib.pyplot as plt

plt.figure(figsize=(16,12), dpi=80)
plt.scatter(dataMatrix[:,0],dataMatrix[:,1], c=dataMatrix[:,4], s=100)
Was mir zu meinem Glück noch fehlt? Ich möchte eine Legende in der die Farben erklärt werden. Das beste, was mir bisher eingefallen ist, wäre über eine for-loop für jede Farbe einzeln eine Maske zu basteln und dann den entsprechenden Teil der Daten zu plotten. Etwa mit

Code: Alles auswählen

dataMatrix[ dataMatrix[:,4] == i ]
Das geht natürlich, scheint aber nicht gerade die eleganteste Lösung zu sein. Kennt da jemand einen besseren Weg?

Danke und beste Grüße, Tyrax
Tyrax
User
Beiträge: 73
Registriert: Mittwoch 4. Februar 2009, 18:31

Na gut, da scheint es keine Vorschläge zu geben. Für alle, die mal am gleichen Punkt ankommen, so hab ich es jetzt erstmal gemacht:

Code: Alles auswählen

colorDict  = {0:'k.', 1:'r.', 2:'g.', 3:'b.', 4:'c.', 5:'m.', 6:'y.'}
colorCount = len(colorDict)
plt.figure(figsize=(16,12), dpi=80)
for color in range(colorCount):
    colorMatrix = dataMatrix[ dataMatrix[:, 4] == color ]
    plt.plot(colorMatrix[:,0],colorMatrix[:,1], colorDict[color], label='coord 3 =' + str(color))
Antworten