【问题标题】:R plotting a graph with different groups of dataR用不同的数据组绘制图表
【发布时间】:2014-12-17 13:24:06
【问题描述】:

我有一个数据集:

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

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

感谢您的所有帮助。

【问题讨论】:

    标签: r plot


    【解决方案1】:

    试试这个:

    with(data,plot(a,b,col=c))
    

    plot() 中的 col 参数代表颜色。这可以包含您想要的颜色的矢量。

    此外,如果颜色-组关系不那么重要,您不必仅仅为了定义颜色而创建一列。例如,您可以将列 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)
    

    【讨论】:

      【解决方案2】:

      试试ggplot2

      library(ggplot2)
      ggplot(data=data, aes(x=a, y=b, colour=c)) + geom_point()
      

      【讨论】:

      • 我很难运行这个。这个ggplot(data=NULL, aes(x=a, y=b, colour = c)) + geom_point() 起作用了。
      猜你喜欢
      • 2018-07-22
      • 2021-10-29
      • 2013-11-23
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-06
      相关资源
      最近更新 更多