2017-03-01 2 views
1

Ich versuche, ein Streudiagramm grafisch darzustellen, wo jeder Punkt zu einer Gruppe gehört und wo jede Gruppe eine Farbe hat. Leider sind die Farben nicht richtig mit dem Code angezeigt Ich verwende:Streudiagramm mit benutzerdefinierten, individuellen Farben von csv

library(ggplot2) 

df <- read.csv(text="Name,Group,Cat,Bet,InD,OutD,Close,Color 
a,ANC,1,0.0465824668474985,13,15,0.5128205128205128,#ABA6A4 
b,WF,1,0.006805116033755275,31,11,0.625,#BAC761 
c,YC,2,0.016471518987341775,10,12,0.5263157894736842,#779BC0 
d,TH,2,0.004483122362869198,10,3,0.5333333333333333,#8AB4A2 
e,FL,3,0.13609064195298373,15,21,0.5882352941176471,#803C72 
f,MJ,2,0.000959915611814346,2,7,0.48484848484848486,#A94D6F 
g,AFPA,1,0.0057674050632911394,15,12,0.5517241379310345,#6D482E 
h,PC,4,0.04844409282700422,15,24,0.5970149253731343,#80A65D 
i,PC,4,0.014266877637130802,3,7,0.5063291139240507,#80A65D 
", check.names = FALSE, sep = ",") 

ggplot(df, aes(InD, OutD)) + 
geom_point(aes(color=factor(Group), size = 5)) + 
scale_colour_manual(values= levels(df$Color)) 

enter image description here

ich offensichtlich etwas falsch bin ... Was die Propper Art und Weise ist kundenspezifische individuelle Farben in einem zu verwenden, Streudiagramm?

+1

'levels' ein lexikalisch sortiert Vektor der eindeutigen Werte immer wieder zurückkehren. Konvertieren Sie die Spalte einfach in ein Zeichen und verwenden Sie die Spalte selbst als Werte. – joran

+1

... ist dies wahrscheinlich mehr auf den Punkt: 'values ​​= setNames (as.character (df $ Farbe), df $ Group)'. Der Grund, warum mein ursprünglicher Vorschlag nicht funktionierte, ist in den Dokumenten für 'scale_color_manual' zu sehen:' Wenn unbenannt, werden die Werte in der Reihenfolge (normalerweise alphabetisch) mit den Grenzen der Skala abgeglichen. – joran

+0

das funktioniert Joran, vielen Dank! Willst du das zu einer Antwort machen? – Rodolphe

Antwort

2

Wahrscheinlich values als benannte Vektor spezifiziert wird besser funktionieren:

+ scale_colour_manual(values= setNames(as.character(df$Color),df$Group)) 
Verwandte Themen