emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Austin Frank <austin.frank@gmail.com>
To: emacs-orgmode@gnu.org
Subject: [org-babel] suggestions for using tikz() graphic device with org-babel-R
Date: Wed, 14 Apr 2010 02:07:11 -0400	[thread overview]
Message-ID: <m0iq7ubm9c.fsf@gmail.com> (raw)


[-- Attachment #1.1.1: Type: text/plain, Size: 992 bytes --]

Hi all--

I'm very excited about a relatively new R package, tikzDevice.  This
takes R graphics and generates LaTeX code inside a tikzpicture
environment that reproduces the desired graphic.  This allows, among
other things, for all text in a figure to use the same fonts as the rest
of your document, and for graph annotations to use latex math markup.

I have attached an example org file that has embedded R code that
generates figures using the tikz() device.[fn:1]

The output from a call to tikz() is a .tex file, which is intended to be
included in a larger LaTeX file using the \input{} command.

How would the org-babel gurus suggest that I automate the process of
embedding these TeX-based graphics in an org file?  What is the right
combination of :file, :exports, and :results arguments to have the
generated file automatically included by a LaTeX \input{} command?

Thanks for any advice!
/au

Footnotes:

[fn:1] If requested, I can send the generated tex and pdf files as well


[-- Attachment #1.1.2: org-tikz.org~ --]
[-- Type: text/plain, Size: 2802 bytes --]

#+TITLE:     Generating PGF graphics from R in org-babel
#+AUTHOR:    Austin F. Frank
#+EMAIL:     austin.frank@gmail.com
#+DATE:      2009-12-11 Fri
#+LANGUAGE:  en
#+OPTIONS:   H:3 num:nil toc:nil \n:nil @:t ::t |:t ^:t -:t f:t *:t <:t
#+OPTIONS:   TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc
#+LATEX_HEADER:  \usepackage{tikz} 


Recently a new =R= package, =pgfSweave=, was announced.[fn:1]  This
package boasts a fascinating capability:  generating all R graphics as
\{LaTeX} code that will be typeset using the tikz package and included
as PGF graphics.[fn:2]  This is an appealing option for several
reasons:
  1.  Scaling of size and adjustments of position should be handled
      seamlessly and without loss of resolution
  2.  Colors can be specified identically for graphics and any other
      markup in the $\LaTeX$ document
  3.  Since they're just more $\LaTeX$ code, graphics can be manually
      edited in emacs
  4.  Same fonts will be used for text in figures as are used in the
      text of the document
  5.  $\LaTeX$ markup can be used in figure text
  6.  tikz integrates nicely with Beamer

Given this list of features, I decided to see whether I could get
similar functionality in org-babel.
* R code
** Load =tikzDevice=
   First, we need to load the packages required for producing tikz
   output in =R=.  If all goes well, you should get a message about
   the paths to the various programs required to generate $\LaTeX$
   markup from within =R=.

#+source: load_tikzDevice
#+BEGIN_SRC R :results output :exports both :cache
## I want to show the messages that are generated when the package is
## loaded.  These are printed to the equivalent of stderr, so I have
## to rewrite the `message' function to produce output that I can
## print back later.
tikz.message <-
  capture.output(withCallingHandlers(library(tikzDevice),
                                     message =
                                     function (m) cat(m$message)))

cat(tikz.message, sep="\n")
#+END_SRC

** R example
#+source: lmer_example
#+BEGIN_SRC R :results output :exports both :cache :session
## I use this library all the time
library(lme4)

## here's the standard example
m <- lmer(Reaction ~ Days + (1 | Subject), sleepstudy)
print(m)
#+END_SRC

** Graphics creation
#+source: tikz_example
#+BEGIN_SRC R :results file :exports code :cache :session
library(tikzDevice)
ranef.m <- ranef(m, postVar = TRUE)
tikz(file = "ranef.tex", width=4, height=4)
print(qqmath(ranef.m))
dev.off()
#+END_SRC

#+BEGIN_CENTER
#+CAPTION:  sample graphics
\input{ranef}
#+END_CENTER

* Footnotes

[fn:1] http://thread.gmane.org/gmane.comp.lang.r.packages/351

[fn:2] http://sourceforge.net/projects/pgf/




[-- Attachment #1.1.3: Type: text/plain, Size: 101 bytes --]


-- 
Austin Frank
http://aufrank.net
GPG Public Key (D7398C2F): http://aufrank.net/personal.asc

[-- Attachment #1.2: Type: application/pgp-signature, Size: 194 bytes --]

[-- Attachment #2: Type: text/plain, Size: 201 bytes --]

_______________________________________________
Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode

             reply	other threads:[~2010-04-14  6:07 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-14  6:07 Austin Frank [this message]
2010-04-14 14:24 ` [org-babel] suggestions for using tikz() graphic device with org-babel-R Eric Schulte
2010-04-14 14:46   ` Erik Iverson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m0iq7ubm9c.fsf@gmail.com \
    --to=austin.frank@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).