1

我希望其他“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"))

在此处输入图像描述

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"))

在此处输入图像描述

4

1 回答 1

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"))

在此处输入图像描述

于 2012-03-17T04:14:54.573 回答