[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Orgmode] [org-babel] suggestions for using tikz() graphic device with o
From: |
Austin Frank |
Subject: |
[Orgmode] [org-babel] suggestions for using tikz() graphic device with org-babel-R |
Date: |
Wed, 14 Apr 2010 02:07:11 -0400 |
User-agent: |
Gnus/5.110011 (No Gnus v0.11) Emacs/24.0.50 (darwin) |
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
#+TITLE: Generating PGF graphics from R in org-babel
#+AUTHOR: Austin F. Frank
#+EMAIL: address@hidden
#+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/
--
Austin Frank
http://aufrank.net
GPG Public Key (D7398C2F): http://aufrank.net/personal.asc
pgp4dSDxQ9aEu.pgp
Description: PGP signature
- [Orgmode] [org-babel] suggestions for using tikz() graphic device with org-babel-R,
Austin Frank <=