R绘制具有不同数据组的图形

时间:2014-12-17 13:24:06

标签: r plot

我有一个数据集:

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将自动绘制图形并为不同的组提供不同的颜色?

另外,我想知道是否有一种快速的方法可以在图表中显示图例。

感谢您的帮助。

2 个答案:

答案 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()