我在匹配我在'plot'函数中使用的正确颜色矢量和我的数据子集中的颜色矢量时遇到了问题,我用它来为我的数据添加图例。如果你有任何建议,我会想知道吗?我一直试图为colorvector指定一个顺序,但是当我把它变成factor时,因子的级别会自动重新排序。
这是我的样本数据:
ID<- c(1,2,3,4,5,6,7,8)
class<- c(NA,NA,'S','S','T','V','G','S')
x<- c(5,3,2,7,6,4,8,3)
y<- c(8,4,1,8,4,8,3,1)
df<- data.frame(ID,class,x,y)
df$choose <- c('FALSE', 'FALSE', 'TRUE', 'TRUE','TRUE','TRUE', 'TRUE', 'TRUE')
df$colorvector <- 'gray'
split(df$colorvector, df$class)<- c('black', 'red', 'blue', 'orange')
plot(df$x,df$y,col=df$colorvector)
text(df$x[df$choose==TRUE], df$y[df$choose==TRUE], labels=df$ID[df$choose==TRUE], cex=0.8, pos=2, font=1)
legend("topright", inset=.05, title="IDs with same class",
legend=sort(levels(df$class[df$choose==TRUE])), fill=levels(as.factor(df$colorvector[df$choose==TRUE])), horiz=TRUE)
提前感谢您的帮助。
答案 0 :(得分:1)
谢谢!
感谢您提出一个问题,提醒我为什么开始使用ggplot2
。这里有很多人开玩笑说ggplot2
被推动作为绘制问题的答案,坦率地说,我们做了一点点。
但是男人,我不记得上次我不得不对这样的传奇大惊小怪。尝试:
library(ggplot2)
ggplot(data = df,aes(x=x,y=y)) +
geom_text(aes(label = ID,colour = class)) +
scale_colour_brewer(pal = 'Set1')
显然,你可以设置自己的调色板,这只是我喜欢的颜色。
答案 1 :(得分:0)
你犯了一个错误,假设当你将colorvector变成一个因子时,它的级别在同一类中排序。一种解决方案是按字母顺序分配颜色。更好的方法是从这些数据中获取您的图例信息......
> unique(df[,c('class','choose','colorvector')])
class choose colorvector
1 <NA> FALSE gray
3 S TRUE red
5 T TRUE blue
6 V TRUE orange
7 G TRUE black
现在一切都会按照正确的顺序进行。