studio - Obtener LaTeX en R Parcelas
sweave r studio install (8)
Me gustaría agregar la composición tipográfica LaTeX
a los elementos de los gráficos en R
(por ejemplo, el título, las etiquetas de los ejes, las anotaciones, etc.) utilizando la combinación de base/lattice
o con ggplot2
.
Preguntas:
- ¿Hay alguna forma de obtener
LaTeX
en parcelas con estos paquetes y, de ser así, cómo se hace? - Si no, ¿hay paquetes adicionales necesarios para lograr esto?
Por ejemplo, en Python matplotlib
compila LaTeX
través de los paquetes text.usetex
como se discutió aquí: http://www.scipy.org/Cookbook/Matplotlib/UsingTex
¿Hay un proceso similar por el cual tales diagramas se pueden generar en R
?
Aquí hay algo de mis propios informes de laboratorio.
-
tickzDevice
exporta imágenestikz
paraLaTeX
Tenga en cuenta que en ciertos casos
"//"
convierte en"/"
y"$"
convierte en"$/"
como en el siguiente código R:"$z//frac{a}{b}$" -> "$/z/frac{a}{b}$/"
También xtable exporta tablas al código de látex
El código:
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
Aquí hay un ejemplo usando ggplot2
:
q <- qplot(cty, hwy, data = mpg, colour = displ)
q + xlab(expression(beta +frac(miles, gallon)))
Aquí hay una función genial que le permite usar la funcionalidad plotmath, pero con las expresiones almacenadas como objetos del modo de caracteres. Esto le permite manipularlos programáticamente utilizando funciones de pegar o expresión regular. No uso ggplot, pero debería funcionar allí también:
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)
Como fue robado de here , el siguiente comando usa correctamente LaTeX para dibujar el título:
plot(1, main=expression(beta[1]))
Ver ?plotmath
para más detalles.
Lo hice hace unos años al enviar a un formato .fig en lugar de directamente a un .pdf; usted escribe los títulos incluyendo el código de látex y usa fig2ps o fig2pdf para crear el archivo gráfico final. La configuración que tuve que hacer esto rompió con R 2.5; si tuviera que hacerlo de nuevo buscaría en tikz, pero lo incluyo de todos modos como otra opción posible.
Mis notas sobre cómo lo hice usando Sweave están aquí: http://www.stat.umn.edu/~arendahl/computing
Puede generar el código tikz de R: http://r-forge.r-project.org/projects/tikzdevice/
Solo tengo una solución. Uno puede primero generar un archivo eps, luego convertirlo a pgf usando la herramienta eps2pgf. Ver http://www.texample.net/tikz/examples/eps2pgf/
Este script contiene una función latex2exp
para traducir aproximadamente las fórmulas de LaTeX a las expresiones de gráfico de R. Puede usarlo en cualquier lugar donde pueda ingresar anotaciones matemáticas, como etiquetas de ejes, etiquetas de leyenda y texto general.
Por ejemplo:
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)
produce esta trama