ggplot expressions

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

ggplot expressions

tring
Dear friends - here is an example of something that I find annoying

library(ggplot2)
DDF <- data.frame(x=x<-seq(1,10),y=x^2)
G <- ggplot(data=DDF,aes(x=x,y=y)) + geom_point()
GG<-G+ylab(expression(paste("Total ",CO[2]," halved")))
GG
GG+annotate("text",x=5,y=50,label=expression(paste("Total ",CO[2],"
halved")))

On my system, R version 3.3.2 (2016-10-31) Windows - the third line
produces the wanted formatting of CO2  with "2" lowered - while the last
line produces an error  "invalid 'type' (expression) of argument" - with
exactly the same string - how comes?

Beautiful ggplot is not exactly low in documentation but finding the
right stuff is not always easy (for me:-))

Best wishes
Troels Ring, MD
Aalborg, Denmark

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
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.
Reply | Threaded
Open this post in threaded view
|

Re: ggplot expressions

David Winsemius

> On Mar 20, 2017, at 4:42 AM, Troels Ring <[hidden email]> wrote:
>
> Dear friends - here is an example of something that I find annoying
>
> library(ggplot2)
> DDF <- data.frame(x=x<-seq(1,10),y=x^2)
> G <- ggplot(data=DDF,aes(x=x,y=y)) + geom_point()
> GG<-G+ylab(expression(paste("Total ",CO[2]," halved")))
> GG
> GG+annotate("text",x=5,y=50,label=expression(paste("Total ",CO[2]," halved")))
>
> On my system, R version 3.3.2 (2016-10-31) Windows - the third line produces the wanted formatting of CO2  with "2" lowered - while the last line produces an error  "invalid 'type' (expression) of argument" - with exactly the same string - how comes?
>
> Beautiful ggplot is not exactly low in documentation but finding the right stuff is not always easy (for me:-))

As the Posting Guide recommends, the question should include the complete text of the error message:

"Error in stats::complete.cases(df[, vars, drop = FALSE]) :
  invalid 'type' (expression) of argument"

In this case, however I find that message completely opaque and the results of traceback() likewise uninformative, so going back to the help pages, always a good place to start, notice that the last example on `?annotate` is isomorphic to you problem, so try using the curiously unlisted `parse`-parameter to annotate. The parse parameter according to the documentation is being passed to `layer`, but `?layer` doesn't describe a parse parameter so I think it's a defect (somewhere) in the ggplot2 help pages.

GG + annotate("text", x=5, y=50, label = "Total~CO[2]~halved", parse=TRUE)

I have removed the call to `paste` since I find that it's use inhibits learning to use expressions most economically. I think it's better to use the tilde rather than assembling a mishmash of quoted and unquoted sub-expressions.

--
David.



>
> Best wishes
> Troels Ring, MD
> Aalborg, Denmark
>
> ______________________________________________
> [hidden email] mailing list -- To UNSUBSCRIBE and more, see
> 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.

David Winsemius
Alameda, CA, USA

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
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.