我有一个数据集:
a<-c(1,2,3,4,5,6,7,8,9,10)
b<-c(2,2,2,2,4,5,6,8,4,1)
c<-c("red","red","red","blue","blue","blue","orange","orange","orange","orange")
data<-data.frame(a=a,b=b,c=c)
我现在想要在图表上绘制数据,每个组具有不同的颜色:
plot(a[c=="red"],b[c=="red"],col="red",xlim=c(min(a),max(a)),ylim=c(min(b),max(b)))
points(a[c=="blue"],b[c=="blue"],col="blue")
points(a[c=="orange"],b[c=="orange"],col="orange")
这很好 - 但是,如果我有30个组,编写代码的任务变得乏味。我想知道是否有更好的编写代码的方法,以便R将自动绘制图形并为不同的组提供不同的颜色?
另外,我想知道是否有一种快速的方法可以在图表中显示图例。
感谢您的帮助。
答案 0 :(得分:2)
试试这个:
with(data,plot(a,b,col=c))
col
中的plot()
参数代表颜色。这可以包含您想要的颜色矢量。
此外,如果颜色组关系不重要,则不必仅为了定义颜色而创建列。例如,您可以将列c
设置为更有意义的列,如下所示:
a<-c(1,2,3,4,5,6,7,8,9,10)
b<-c(2,2,2,2,4,5,6,8,4,1)
c<-c(rep('Group1',3),rep('Group2',3),rep('Group3',4))
data<-data.frame(a=a,b=b,c=c)
然后绘制,使用:
with(data,plot(a,b,col=c))
添加图例:
legend('topleft',legend = levels(data[,'c']),col=1:nlevels(data[,'c']),pch=1)
答案 1 :(得分:1)
尝试ggplot2
library(ggplot2)
ggplot(data=data, aes(x=a, y=b, colour=c)) + geom_point()