Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Embedding R plots in Latex via org-mode

I'm just getting started with org-mode and so far I love it. I've seen that it is possible to insert R in the org-mode file and execute it upon export. But I have some trouble getting org-babel (the code embedding) to generate the plot I'm interested in and embed the resulting image instead of the code or the output from running the code.

So far I've got this to work:

#+BABEL: :session *R* :results output graphics :exports both
#+begin_src R :file img.pdf :results output graphics :session *R*
hist(rnorm(100))
#+end_src

#\includegraphics{img.pdf}

But it's not as nice as it could be. First it always prompts me whether I do want to execute the R code and secondly I would like to eliminate the \includegraphics instruction.

Is this possible at all?

like image 970
cdecker Avatar asked Jan 23 '12 23:01

cdecker


1 Answers

Few things: 1) Org mode has changed a lot recently, especially w.r.t. Babel and src blocks - get the latest version from their git repository (check the FAQ for details how to do that). 2) We don't use #+BABEL line any more, those are now done with #+PROPERTY lines, 3) The inclusion of graphics is done automatically. A person shouldn't need to do an \includegraphics{} at all (unless you want to tweak the default behavior, say, for caption placement).

For instance, here's what a simple version of your example would look like under a recent version of Org mode:

#+TITLE:    tester.org
#+PROPERTY: session *R*
#+PROPERTY: results output

* Headline here

Here is some text.

#+begin_src R :exports both :results graphics :file img.pdf
hist(rnorm(100))
#+end_src

I just tested on my machine and it works like a charm. One last thing - I highly recommend you subscribe to the Org mode mailing list, because that's the place you'll see the ongoing discussions about the BABEL, PROPERTY, and a whole bunch of other stuff.

By the way, the #+PROPERTY: results output line isn't critical, it's just what I usually do because it's more like what I expect from Sweave.

like image 103
G. Jay Kerns Avatar answered Sep 17 '22 15:09

G. Jay Kerns