2016-03-31 6 views
0

Also habe ich eine Handlung in R gemacht, mit vielen verschiedenen Farben, die angeben, zu welcher meiner 23 Kategorien ein Punkt gehört. Die Farben der Punkte werden durch einen Vektor (Stratumcol, ein Faktor mit 23 Stufen) hinzugefügt.R plot Legende zeigt keine Farben nach Punkten

Wenn ich die Legende hinzufüge und versuche, die Farben und ihre Kategorie anzuzeigen, scheint es, dass sie nicht übereinstimmen (getestet mit ordinate, siehe Bild unten).

Das ist mein Grundstück Code:

plot(pca_nmdsscores, type = "n") 
points(pca_nmdsscores, col=stratumcol, cex=1.5, pch = 15) 
legend("right","top",levels(stratumcol),cex=.8, col = as.numeric(stratumcol), pch =15, lty = 0) # pch = stratumcol 
ordihull(pca_nmdsscores, groups = stratumcol,draw = "polygon", col ="purple",label = T, show.groups = "LateMoistRich") 
ordihull(pca_nmdsscores, groups = stratumcol,draw = "polygon", col ="blue",label = T, show.groups = "MidWetPoor") 

Hier sollte meine Rplot sichtbar sein. Wie Sie sehen können, verbindet meine Kategorie "MaleMoistRich" die Punkte mit der pinkfarbenen Farbe, aber in der Legende heißt diese Farbe "MidMoistRich".

Das gleiche gilt für "MidWetPoor", die die mittleren blauen Punkte verbindet, in der Legende bezieht sich diese Farbe auf "LateMoistPoor".

Wie löse ich dieses Problem?

Ich habe versucht, nach Lösungen zu suchen, aber nicht auf irgendwelche, die es lösen konnte - einschließlich "einzigartig" (was nichts ändert, da meine Palette mit 23 Farben definiert wurde, also keine Notwendigkeit, diese zu recyceln sowieso)

[Parzelle von R, zeigt Legende und Punkte color] [1]

Ok - so, seit ich bin ein Neuling ich kein Bild von meinem Grundstück hochladen ...

Aber sieh es hier stattdessen: http://i.stack.imgur.com/pzn2y.png

/danke s

Edit: Die Lösung war, Ebenen() auf meinem Faktor nicht zu verwenden! Nicht in der Legende = Ebenen (Stratumcol), noch in Col = Ebenen (Stratumcol). Richard und DeveauP schlugen vor, dass Levels das Problem sein könnten.

Dies verursachte ein neues Problem: mein legen zeigte den ganzen Faktor, nicht nur die Ebenen in ihm (aber die Farben entsprachen den richtigen Punktfarben, die das ursprüngliche Problem war).

Dieses neue Problem wurde gelöst, indem "unique()" anstelle von "levels()" verwendet wurde.

legend("Right","top",legend=unique(stratumcol), cex=.8, col = unique(stratumcol), pch=15, lty=0) 

fand ich eine Lösung

+0

Ich sehe, dass Sie "col = as.numeric (stratumcol)" in der Legende setzen, kann dies die Reihenfolge im Vergleich zu ändern, um die Faktoren, (Nummer 1 ist nicht unbedingt der erste Faktor). Was passiert, wenn Sie as.numeric entfernen? – DeveauP

+0

Das ändert nichts. Ich habe es hinzugefügt, um es zu versuchen und zu beheben - was es auch nicht tat :) – AAL

+1

Das Problem könnte mit Ihrer Verwendung der Legende sein. Wenn stratumcol ein Faktor ist, gibt as.numeric() eher Faktorcodes zurück als die Farben. Auch as.numeric (stratumcol) gibt den Vektor in der Reihenfolge an, in der er sich befindet, und nicht in der Reihenfolge, die den Ebenen entspricht(). –

Antwort

1

Versuchen

legend("right","top",legend = levels(stratumcol),cex=.8, col = levels(stratumcol), pch =15, lty = 0) 
+0

Was ich getan habe, war das Entfernen der "levels()", was das Problem löste, aber ein neues verursachte -> Wiederholung meines Faktors alle 130 Mal, anstatt der Legende nur einmal die 23 Levels. ##### Ich versuchte es zu lösen, wie Sie @Richard Telford vorgeschlagen, aber das Hinzufügen von Col = Ebenen (Stratumcol) gibt einen Fehler: "ungültiger Farbname 'EarlyDryPoor'", und keine Legende wird überhaupt angezeigt. – AAL

+0

Ich muss die Legende möglicherweise manuell definieren, basierend auf der Reihenfolge, in der sie in der Faktorspalte erscheinen, obwohl ich dies lieber nicht bei allen meinen Faktoren tun würde ... – AAL

+0

OK, ich habe missverstanden, wie Ihre Daten angeordnet sind. Wie haben Sie die Farben angegeben? Mit einer Palette? Wenn so col = 1:23 wird funktionieren. –