[R] Ggplot2: Moving legend, change fill and removal of space between plots when using grid.arrange() possible use of facet_grid?

John Kane jrkrideau at inbox.com
Wed Mar 6 20:24:53 CET 2013


Replying to my own post RStudio is doing this fine once I had rebooted R.  I must have had some strange stuff loaded that I had not realised was there.

John Kane
Kingston ON Canada


> -----Original Message-----
> From: jrkrideau at inbox.com
> Sent: Wed, 6 Mar 2013 11:16:28 -0800
> To: anna at ecology.su.se, r-help at r-project.org
> Subject: Re: [R] Ggplot2: Moving legend, change fill and removal of space
> between plots when using grid.arrange() possible use of facet_grid?
> 
> Placing a legend.
> 
>  z <- ggplot(mtcars, aes(wt, mpg, colour = factor(cyl))) + geom_point()
>   z + theme(legend.position = c(.5, .5))
> 
> Currently this does not appear to work in RStudio but seems fine if I use
> gedit or if I run R in a terminal session.
> 
> John Kane
> Kingston ON Canada
> 
> 
>> -----Original Message-----
>> From: anna at ecology.su.se
>> Sent: Wed, 06 Mar 2013 13:32:42 +0100
>> To: r-help at r-project.org
>> Subject: [R] Ggplot2: Moving legend, change fill and removal of space
>> between plots when using grid.arrange() possible use of facet_grid?
>> 
>> Hi,
>> 
>> # For publications, I am not allowed to repeat the axes. I have tried to
>> remove the axes using:
>> # yaxt="n", but it did not work. I have not understood how to do this in
>> ggplot2. Can you help me?
>> # I also do not want loads of space between the graphs (see below script
>> with Dummy Data).
>> # If I could make it look like the examples on the (nice) examples page:
>> # http://www.ling.upenn.edu/~joseff/rstudy/summer2010_ggplot2_intro.html
>> # using the facet_grid(), I would be very very happy.
>> 
>> # I also do not want the gemoetric points to be filled and the
>> fill="white"
>> commande
>> # does not seem to work - why? and are there alternatives?
>> 
>> #Furthermore, I would like to add legends to inside the plot area
>> instead
>> of
>> on the side. Like when you use plotrix() and brkdn.plot:
>> legend("topright", c("A", "B"), pch=c(0,1), bg="white",
>>        lty = 1:2, cex=1, bty="n")
>> # This did not work in ggplot2. What are my alternatives. I have
>> extensively
>> searched the internet and have I missed something obvious, it was due to
>>    # tiredness and not to lazyness.
>> 
>> # Some dummy data:
>> mydata<- data.frame(factor1 = factor(rep(LETTERS[1:6], each = 80)),
>>                   factor2 = factor(rep(c(1:5), each = 16)),
>>                   factor3 = factor(rep(c(1:4), each = 4)),
>>                   var1 = rnorm(120, mean = rep(c(0, 3, 5), each = 40),
>>                   sd = rep(c(1, 2, 3), each = 20)),
>>                   var2 = rnorm(120, mean = rep(c(6, 7, 8), each = 40),
>>                   sd = rep(c(1, 2, 3), each = 20)))
>> 
>> 
>> # Splitting data into 3 data frames (based on factor1)
>> # If I could do this using for example facet_wrap() or facet_grid(), I
>> would
>> be very
>> # happy! I have tried but failed that method.
>> 
>> DataAB <- mydata[(mydata$factor1) %in% c("A", "B"), ]
>> DataCD <- mydata[(mydata$factor1) %in% c("C", "D"), ]
>> DataEF <- mydata[(mydata$factor1) %in% c("E", "F"), ]
>> DataAB
>> library(plyr)
>> library(ggplot2)
>> 
>> #Plot: levels A and B:
>> # Summary (means etc)
>> SummAB  <-   ddply(DataAB, .(factor3,factor1), summarize,
>>                        mean = mean(var1, na.rm = FALSE),
>>                        sdv = sd(var1, na.rm = FALSE),
>>                        se = 1.96*(sd(var1,
>> na.rm=FALSE)/sqrt(length(var1))))
>> SummAB
>> p1  <-  ggplot(SummAB, aes(factor3, mean,
>>                                colour = factor1, group = factor1,
>>                                shape = factor1)) +
>>   geom_point(aes(shape=factor(factor1)), color="black", fill="white",
>>              position = "dodge", width = 0.3, size=3) +
>>   geom_line(aes(linetype=factor1), color = "black", size = 0.5) +
>>   geom_errorbar(aes(ymin = mean - sdv , ymax = mean + sdv), width = 0.3,
>>                 position = "dodge", color = "black", size=0.3) +
>>   theme_bw() +
>>   ylab(expression(paste("my measured stuff"))) +
>>   xlab("factor3") + ggtitle("") +
>>   labs(color = "factor1", shape = "factor1", group = "factor1",
>>        linetype = "factor1")
>> p1
>> 
>> #Plot: levels C and D:
>> # Summary (means etc)
>> SummCD  <-   ddply(DataCD, .(factor3,factor1), summarize,
>>                    mean = mean(var1, na.rm = FALSE),
>>                    sdv = sd(var1, na.rm = FALSE),
>>                    se = 1.96*(sd(var1, na.rm=FALSE)/sqrt(length(var1))))
>> 
>> p2  <-  ggplot(SummCD, aes(factor3, mean,
>>                            colour = factor1, group = factor1,
>>                            shape = factor1)) +
>>   geom_point(aes(shape=factor(factor1)), color="black", fill="white",
>>              position = "dodge", width = 0.3, size=3) +
>>   geom_line(aes(linetype=factor1), color = "black", size = 0.5) +
>>   geom_errorbar(aes(ymin = mean - sdv , ymax = mean + sdv), width = 0.3,
>>                 position = "dodge", color = "black", size=0.3) +
>>   theme_bw() +
>>   ylab(expression(paste("my measured stuff"))) +
>>   xlab("factor3") + ggtitle("") +
>>   labs(color = "factor1", shape = "factor1", group = "factor1",
>>        linetype = "factor1")
>> p2
>> 
>> #Plot: levels C and D:
>> # Summary (means etc)
>> SummEF  <-   ddply(DataEF, .(factor3,factor1), summarize,
>>                    mean = mean(var1, na.rm = FALSE),
>>                    sdv = sd(var1, na.rm = FALSE),
>>                    se = 1.96*(sd(var1, na.rm=FALSE)/sqrt(length(var1))))
>> 
>> p3  <-  ggplot(SummEF, aes(factor3, mean,
>>                            colour = factor1, group = factor1,
>>                            shape = factor1)) +
>>   geom_point(aes(shape=factor(factor1)), color="black", fill="white",
>> #Why
>> is the fill commando not working?
>>              position = "dodge", width = 0.3, size=3) +
>>   geom_line(aes(linetype=factor1), color = "black", size = 0.5) +
>>   geom_errorbar(aes(ymin = mean - sdv , ymax = mean + sdv), width = 0.3,
>>                 position = "dodge", color = "black", size=0.3) +
>>   theme_bw() +
>>   ylab(expression(paste("my measured stuff"))) +
>>   xlab("factor3") + ggtitle("") +
>>   labs(color = "factor1", shape = "factor1", group = "factor1",
>>        linetype = "factor1")
>> p3
>> 
>> ary(gridExtra)
>> sidebysideplot <- grid.arrange(p1, p2, p3, ncol=2)
>> 
>> 
>> Anna Zakrisson Braeunlich
>> PhD student
>> 
>> Department of Ecology Environment and Plant Sciences
>> Stockholm University
>> Svante Arrheniusv. 21A
>> SE-106 91 Stockholm
>> Sweden
>> 
>> 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
>> 
>> ><((((B:>`b?". . b?" `b?". .b?" `b?". . ><((((B:>`b?". . b?" `b?". .b?"
>> `b?". .><((((B:>`b?". . b?" `b?". .b?" `b?". .><((((B:>
>> 
>> 	[[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.
> 
> ____________________________________________________________
> FREE 3D MARINE AQUARIUM SCREENSAVER - Watch dolphins, sharks & orcas on
> your desktop!
> 
> ______________________________________________
> 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.

____________________________________________________________
FREE 3D MARINE AQUARIUM SCREENSAVER - Watch dolphins, sharks & orcas on your desktop!



More information about the R-help mailing list