Reputation: 13443
I want additional 'geoms' to only apply to a subset of the initial data. I would like this subset to be from each units created by facets=~.
My trials using subletting of either the data or of the plotted variables leads to subsetting of the whole data set, rather than the subletting of the units created by 'facets=~' and in two different ways (apparently dependant on the sorting of the data).
This difficulty is appears with any 'geom' while using 'facets'
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"))
Upvotes: 1
Views: 532
Reputation: 13443
The answer is to subset the data in a first step.
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"))
Upvotes: 2