Introduire du LaTeX dans les parcelles R

je voudrais ajouter LaTeX composition d'éléments de parcelles dans R (E. g: le titre, les étiquettes axis, les annotations, etc.) utilisant soit la combinaison de base/lattice soit avec ggplot2 .

Questions:

  • y a-t-il un moyen d'introduire LaTeX dans les parcelles en utilisant ces paquets, et si oui, comment le faire?
  • dans la négative, des colis supplémentaires sont-ils nécessaires? pour accomplir cette tâche.

par exemple, dans Python matplotlib compiles LaTeX via les paquets text.usetex comme discuté ici: http://www.scipy.org/Cookbook/Matplotlib/UsingTex

Existe-t-il un processus similaire permettant de générer de telles parcelles dans R ?

107
demandé sur Paul 2009-09-08 21:04:26

8 réponses

voici un exemple d'utilisation de ggplot2 :

q <- qplot(cty, hwy, data = mpg, colour = displ)
q + xlab(expression(beta +frac(miles, gallon)))

alt texte http://i31.tinypic.com/10z7n7d.png

43
répondu Christopher DuBois 2009-09-12 01:11:16

Comme volé ici , la commande suivante utilise correctement LaTeX pour dessiner le titre:

plot(1, main=expression(beta[1]))

voir ?plotmath pour plus de détails.

30
répondu Christopher DuBois 2009-09-08 18:32:05

ce script contient une fonction latex2exp pour traduire approximativement les formules LaTeX aux expressions plotmath de R. Vous pouvez l'utiliser n'importe où vous pourriez entrer des annotations mathématiques, telles que des étiquettes axis, des étiquettes de légende, et du texte général.

par exemple:

x <- seq(0, 4, length.out=100)
alpha <- 1:5
plot(x, xlim=c(0, 4), ylim=c(0, 10), xlab='x', ylab=latex2exp('\alpha
     x^\alpha\text{, where }\alpha \in \text{1:5}'), type='n')
for (a in alpha)
    lines(x, a*x^a, col=a)
legend('topleft', legend=latex2exp(sprintf("\alpha = %d", alpha)), lwd=1, col=alpha)

produit cette parcelle .

23
répondu Stefano Meschiari 2015-06-11 16:59:49

vous pouvez générer du code tikz à partir de R: http://r-forge.r-project.org/projects/tikzdevice/

15
répondu Mica 2009-09-08 18:31:24

voici quelque chose de mes propres rapports de laboratoire.

  • tickzDevice exportations tikz images LaTeX
  • Note, que dans certains cas "\" devient "\" et "$" devient "$\" comme dans le code R suivant: "$z\frac{a}{b}$" -> "$\z\frac{a}{b}$\"

  • "
  • Aussi xtable exportations des tables de code latex

Le code:

library(reshape2)
library(plyr)
library(ggplot2)
library(systemfit)
library(xtable)
require(graphics)
require(tikzDevice)

setwd("~/DataFolder/")
Lab5p9 <- read.csv (file="~/DataFolder/Lab5part9.csv", comment.char="#")

AR <- subset(Lab5p9,Region == "Forward.Active")

# make sure the data names aren't already in latex format, it interferes with the ggplot ~  # tikzDecice combo
colnames(AR) <- c("$V_{BB}[V]$", "$V_{RB}[V]$" ,  "$V_{RC}[V]$" , "$I_B[\mu A]$" , "IC" , "$V_{BE}[V]$" , "$V_{CE}[V]$" , "beta" , "$I_E[mA]$")

# make sure the working directory is where you want your tikz file to go
setwd("~/TexImageFolder/")

# export plot as a .tex file in the tikz format
tikz('betaplot.tex', width = 6,height = 3.5,pointsize = 12) #define plot name size and font size

#define plot margin widths
par(mar=c(3,5,3,5)) # The syntax is mar=c(bottom, left, top, right).

ggplot(AR, aes(x=IC, y=beta)) +                                # define data set 
    geom_point(colour="#000000",size=1.5) +                # use points
    geom_smooth(method=loess,span=2) +                     # use smooth
    theme_bw() +                    # no grey background
    xlab("$I_C[mA]$") +                 # x axis label in latex format
    ylab ("$\beta$") +                 # y axis label in latex format
    theme(axis.title.y=element_text(angle=0)) + # rotate y axis label
    theme(axis.title.x=element_text(vjust=-0.5)) +  # adjust x axis label down
    theme(axis.title.y=element_text(hjust=-0.5)) +  # adjust y axis lable left
    theme(panel.grid.major=element_line(colour="grey80", size=0.5)) +# major grid color
    theme(panel.grid.minor=element_line(colour="grey95", size=0.4)) +# minor grid color 
    scale_x_continuous(minor_breaks=seq(0,9.5,by=0.5)) +# adjust x minor grid spacing
    scale_y_continuous(minor_breaks=seq(170,185,by=0.5)) + # adjust y minor grid spacing
    theme(panel.border=element_rect(colour="black",size=.75))# border color and size

dev.off() # export file and exit tikzDevice function
5
répondu N8TRO 2016-02-21 16:18:40

Voici une fonction cool qui vous permet d'utiliser la fonctionnalité plotmath, mais avec les expressions stockées comme objets du mode caractère. Cela vous permet de les manipuler programmatiquement en utilisant des fonctions de coller ou d'expression régulière. Je n'utilise pas ggplot, mais il devrait fonctionner là aussi:

    express <- function(char.expressions){
       return(parse(text=paste(char.expressions,collapse=";")))
    }
    par(mar=c(6,6,1,1))
    plot(0,0,xlim=sym(),ylim=sym(),xaxt="n",yaxt="n",mgp=c(4,0.2,0),
       xlab="axis(1,(-9:9)/10,tick.labels,las=2,cex.axis=0.8)",
       ylab="axis(2,(-9:9)/10,express(tick.labels),las=1,cex.axis=0.8)")
    tick.labels <- paste("x >=",(-9:9)/10)
    # this is what you get if you just use tick.labels the regular way:
    axis(1,(-9:9)/10,tick.labels,las=2,cex.axis=0.8)
    # but if you express() them... voila!
    axis(2,(-9:9)/10,express(tick.labels),las=1,cex.axis=0.8)
4
répondu mwrowe 2013-04-26 22:07:21

j'ai fait ça il y a quelques années en sortant à A.format fig au lieu de directement à A.pdf; vous écrivez les titres y compris le code latex et utilisez fig2ps ou fig2pdf pour créer le fichier graphique final. La configuration que j'ai eu pour faire ceci a cassé avec R 2.5; si je devais le faire à nouveau, je regarderais dans tikz à la place, mais je l'inclus ici de toute façon comme une autre option potentielle.

mes notes sur la façon dont je l'ai fait en utilisant Sweave sont ici: http://www.stat.umn.edu/~arendahl/informatique

2
répondu Aaron 2011-04-08 20:59:44

j'ai juste une solution. On peut d'abord générer un fichier eps, puis le convertir de nouveau en pgf en utilisant l'outil eps2pgf. Voir http://www.texample.net/tikz/examples/eps2pgf/

0
répondu Xin Guo 2013-11-05 19:31:44