2017-03-01 127 views
1

我试图绘制散点图,其中每个点属于一个组,并且每个组都有一个颜色。散点图与自定义,个别颜色从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

我明明做错了什么......什么是propper方式,使用自定义的个人色彩:不幸的是,不与我使用的代码可以正确显示的颜色散点图?

+1

'levels'总是返回唯一值的词法排序向量。只需将列转换为字符并将列本身用作值。 – joran

+1

...实际上,这可能更重要:'values = setNames(as.character(df $ Color),df $ Group)'。我的原始建议不起作用的原因见于'scale_color_manual'的文档:'如果未命名,值将按比例(通常按字母顺序)与规模的限制匹配。“ – joran

+0

工作Joran,非常感谢!你想把它变成答案吗? – Rodolphe

回答

2

大概指定values为一个名为向量将更好地工作:

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