Seite 1 von 1

Scatterplot mit pyplot: Farben und labels

Verfasst: Samstag 29. Juni 2013, 14:12
von Tyrax
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

Re: Scatterplot mit pyplot: Farben und labels

Verfasst: Montag 1. Juli 2013, 10:51
von Tyrax
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))