Anna Zakrisson Braeunlich
2014-Feb-03 11:54 UTC
[R] ggplot2: removing empty factor levels in facet_grid
Hi,
I would like to thank you for a great package and for all help I have recieved
in the past. To my question:
I have a plot where I have used facet_grid. I have factor: station (B1, BY31,
H2) and factor: year (2007, 2008). The plot has two "plot panels"
empty as there are no combinations H2:2007 and BY31:2008. For my own data, there
is only one panel empty (I am bad at making appropriate dummy data as I am quite
new to this) and I am not allowed to publish it like this. The empty panel
needs to be removed.
I have tried loads of things like removing H2:2007 and BY31:2008 by using:
mydata_truncated <- mydata[
mydata$
station != "BY31" |
mydata$Year !="2008", ]
and have tried facet_grid(year~station, scales = "fixed", drop=TRUE)
this doesn't work as all factors are used, it is only a combination of
factor levels that need to go.
I would be extremely grateful for any help.
The script:
mydata<- data.frame(week = factor(rep(c("19", "21",
"23", "25"), each = 10*3)),
station = factor(rep(c("BY31", "B1",
"H2"), each = 40)),
year = factor(rep(c("2007", "2008"),
each = 60)),
organism = factor(rep(c("zpl", "ses",
"cy"), each = 40)),
values = rnorm(120, mean = rep(c(0, 3, 15), each = 10),
sd = rep(c(1, 3, 6), each = 10)))
p <- ggplot(mydata,aes(week,values))+
facet_grid(year~station, scales = "fixed", drop=TRUE)+ #drop=TRUE
does not work as all factors are used
scale_shape_manual(values = 1:3) +
geom_point(mapping=aes(shape=factor(organism)))+
theme_bw() +
theme(strip.background = element_blank()) +
ggtitle("this plot is ugly but ignore that")+
xlab("my x-axis stuff")+
ylab("my y-axis stuff")+
theme(legend.title=element_blank(), legend.key element_blank())
p
Anna Zakrisson Braeunlich
PhD student
Department of Ecology, Environment and Plant Sciences
Stockholm University
Svante Arrheniusv. 21A
SE-106 91 Stockholm
Sweden/Sverige
Lives in Berlin.
For paper mail:
Katzbachstr. 21
D-10965, Berlin - Kreuzberg
Germany/Deutschland
E-mail: anna.zakrisson@su.se
Tel work: +49-(0)3091541281
Mobile: +49-(0)15777374888
LinkedIn: http://se.linkedin.com/pub/anna-zakrisson-braeunlich/33/5a2/51b
><((((º>`•. . • `•. .• `•. . ><((((º>`•. . • `•. .• `•.
.><((((º>`•. . • `•. .• `•. .><((((º>
[[alternative HTML version deleted]]
Hi Anna,
It's unclear what you want here, as it doesn't make sense in this
example to remove the empty panels. Doing so will mess up the
alignment of the remaining panels. Perhaps you want
ggplot(mydata,aes(week,values))+
facet_wrap(~year+station, scales = "fixed", drop=TRUE)+
scale_shape_manual(values = 1:3) +
geom_point(mapping=aes(shape=factor(organism)))+
theme_bw() +
theme(strip.background = element_blank()) +
ggtitle("this plot is ugly but ignore that")+
xlab("my x-axis stuff")+
ylab("my y-axis stuff")+
theme(legend.title=element_blank(), legend.key element_blank())
?
Note also that there is a separate ggplot2 mailing list at
https://groups.google.com/forum/#!forum/ggplot2 -- you may wish to
post ggplot2-related questions there in the future.
Best,
Ista
On Mon, Feb 3, 2014 at 6:54 AM, Anna Zakrisson Braeunlich
<anna.zakrisson at su.se> wrote:> Hi,
>
> I would like to thank you for a great package and for all help I have
recieved in the past. To my question:
> I have a plot where I have used facet_grid. I have factor: station (B1,
BY31, H2) and factor: year (2007, 2008). The plot has two "plot
panels" empty as there are no combinations H2:2007 and BY31:2008. For my
own data, there is only one panel empty (I am bad at making appropriate dummy
data as I am quite new to this) and I am not allowed to publish it like this.
The empty panel needs to be removed.
>
> I have tried loads of things like removing H2:2007 and BY31:2008 by using:
> mydata_truncated <- mydata[
> mydata$
> station != "BY31" |
> mydata$Year !="2008", ]
>
> and have tried facet_grid(year~station, scales = "fixed",
drop=TRUE) this doesn't work as all factors are used, it is only a
combination of factor levels that need to go.
> I would be extremely grateful for any help.
>
> The script:
> mydata<- data.frame(week = factor(rep(c("19", "21",
"23", "25"), each = 10*3)),
> station = factor(rep(c("BY31",
"B1", "H2"), each = 40)),
> year = factor(rep(c("2007",
"2008"), each = 60)),
> organism = factor(rep(c("zpl",
"ses", "cy"), each = 40)),
> values = rnorm(120, mean = rep(c(0, 3, 15), each = 10),
> sd = rep(c(1, 3, 6), each = 10)))
>
>
> p <- ggplot(mydata,aes(week,values))+
> facet_grid(year~station, scales = "fixed", drop=TRUE)+
#drop=TRUE does not work as all factors are used
> scale_shape_manual(values = 1:3) +
> geom_point(mapping=aes(shape=factor(organism)))+
> theme_bw() +
> theme(strip.background = element_blank()) +
> ggtitle("this plot is ugly but ignore that")+
> xlab("my x-axis stuff")+
> ylab("my y-axis stuff")+
> theme(legend.title=element_blank(), legend.key >
element_blank())
> p
>
> Anna Zakrisson Braeunlich
> PhD student
>
> Department of Ecology, Environment and Plant Sciences
> Stockholm University
> Svante Arrheniusv. 21A
> SE-106 91 Stockholm
> Sweden/Sverige
>
> Lives in Berlin.
> For paper mail:
> Katzbachstr. 21
> D-10965, Berlin - Kreuzberg
> Germany/Deutschland
>
> E-mail: anna.zakrisson at su.se
> Tel work: +49-(0)3091541281
> Mobile: +49-(0)15777374888
> LinkedIn: http://se.linkedin.com/pub/anna-zakrisson-braeunlich/33/5a2/51b
>
>><((((?>`?. . ? `?. .? `?. . ><((((?>`?. . ? `?. .? `?.
.><((((?>`?. . ? `?. .? `?. .><((((?>
>
> [[alternative HTML version deleted]]
>
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>