如何在ggplot2中使用facet时为其他geom配置数据?

时间:2012-03-16 13:53:44

标签: r ggplot2 data-visualization

我希望其他“geoms”仅应用于初始数据的子集。我希望这个子集来自facets =〜。

创建的每个单元

我使用数据或绘制变量的转租的试验导致整个数据集的子集化,而不是由'facets =〜'以两种不同的方式(显然取决于排序)转移的单位的转租数据)。

使用'facets'时,任何'geom'都会出现这种困难

library(ggplot2)

test.data<-data.frame(factor=rep(c("small", "big"), each=9),
                              x=c(c(1,2,3,3,3,2,1,1,1), 2*c(1,2,3,3,3,2,1,1,1)),
                              y=c(c(1,1,1,2,3,3,3,2,1), 2*c(1,1,1,2,3,3,3,2,1)))


factor x y
1   small 1 1
2   small 2 1
3   small 3 1
4   small 3 2
5   small 3 3
6   small 2 3
7   small 1 3
8   small 1 2
9   small 1 1
10    big 2 2
11    big 4 2
12    big 6 2
13    big 6 4
14    big 6 6
15    big 4 6
16    big 2 6
17    big 2 4
18    big 2 2


qplot(data=test.data,
      x=x,
      y=y,
      geom="polygon",
      facets=~factor)+
      geom_polygon(data=test.data[c(2,3,4,5,6,2),],
                   aes(x=x,
                       y=y),
                   fill=I("red"))

enter image description here

qplot(data=test.data,
      x=x,
      y=y,
      geom="polygon",
      facets=~factor)+
        geom_polygon(aes(x=x[c(2,3,4,5,6,2)],
                         y=y[c(2,3,4,5,6,2)]),
                     fill=I("red"))

enter image description here

1 个答案:

答案 0 :(得分:2)

答案是在第一步中对数据进行子集化。

library(ggplot2)
library(plyr)

test.data<-data.frame(factor=rep(c("small", "big"), each=9),
                      x=c(c(1,2,3,3,3,2,1,1,1), 2*c(1,2,3,3,3,2,1,1,1)),
                      y=c(c(1,1,1,2,3,3,3,2,1), 2*c(1,1,1,2,3,3,3,2,1)))

subset.test<-ddply(.data=test.data,
                   .variables="factor",
                   function(data){
                     data[c(2,3,4,5,6,2),]})

qplot(data=test.data,
      x=x,
      y=y,
      geom="polygon",
      facets=~factor)+
        geom_polygon(data=subset.test,
                     fill=I("red"))

enter image description here