我在'plot‘函数中使用的正确颜色矢量与我用来向数据添加图例的数据子集中的颜色矢量匹配时遇到了问题。我在想,你有什么建议吗?我一直在尝试为颜色向量指定顺序,但当我将其转换为factor时,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)
提前感谢您的帮助。
发布于 2011-10-30 20:33:55
你犯了一个错误,假设当你把颜色矢量变成一个因子时,它的级别与类的排序是一样的。一种解决方案是按字母顺序分配颜色。更好的方法可能是从这些数据中获取图例信息...
> 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
现在,一切都将按正确的顺序进行。
发布于 2011-10-30 20:18:33
谢谢!
谢谢你问了一个问题,让我想起了为什么我开始使用ggplot2
。这里的许多人都开玩笑说,作为密谋问题的答案,ggplot2
被推了多少次,坦率地说,我们有点重复了。
但是伙计,我不记得上一次为这样的传奇大惊小怪是什么时候了。尝试:
library(ggplot2)
ggplot(data = df,aes(x=x,y=y)) +
geom_text(aes(label = ID,colour = class)) +
scale_colour_brewer(pal = 'Set1')
显然,你可以设置你自己的调色板,这只是我喜欢的一个。
https://stackoverflow.com/questions/7947361
复制相似问题