2012-02-15 15 views

Respuesta

7

Existen varias secuencias de comandos convertidor LaTeX-a-Imagen, diseñadas para hacer cosas como convertir ecuaciones en imágenes para incluirlas en páginas web.

Si puede encontrar uno de estos (¿quizás dvipng?), Entonces puede pasar de una tabla en R a LaTeX lo suficientemente fácil y luego de LaTeX a png.

Si ha dvipng, puede aprovechar las conversiones de látex de Hmisc a hacer una función más ordenado a hacerlo:

dvipng.dvi <- 
    function (object, file, ...) 
{ 
    cmd <- if (missing(file)) 
    paste("dvipng -T tight", shQuote(object$file)) 
    else paste("dvipng -T tight", "-o", file, shQuote(object$file)) 
    invisible(sys(cmd)) 
} 

Y entonces usted puede hacer:

> tt # here is a table 
    y 
x 1 2 3 
    1 9 12 11 
    2 18 9 10 
    3 10 7 14 
> dvipng.dvi(dvi.latex(latex(tt))) 

y que va a producir un png archivo con un nombre aleatorio en el directorio de trabajo. La opción "apretada" recortará todos los espacios en blanco de su redondeo.

Eso es todo lo directo que puedo pensar que es posible.

¿Linux o Windows o Mac o Atari?

+0

de Windows, preferiblemente. –

+0

Bueno, si Hmisc funciona en su sistema y dvipng está incluido en su TeX, entonces mi solución podría funcionar ... – Spacedman

+0

Veo un archivo DVI en el directorio (no está familiarizado con ese formato) pero no PNG. –

0

No tengo una buena respuesta que incluya el uso de R, pero si estaba desesperado, supongo que una 'pantalla de impresión' y una copia para Paint u otro programa similar y finalmente guardarlo al menos le daría la imagen en un formato almacenable.

He creado la documentación del usuario "paso a paso" de esta manera cuando otras opciones no estaban disponibles.

5

xtable proporciona la opción de generar ya sea latex o html markup. Puedes poner el html directamente.

Habiendo dicho que yo también me gustaría poder ir directamente desde punto o sweave a png o svg. Intentaba hacer esto la semana pasada. Estoy construyendo una infografía de inkscape (svg) y he estado buscando una forma de insertar una imagen vinculada de una tabla que se actualiza ejecutando el código R.

En las pruebas iniciales, combiné el uso de xtable y el código de Spacedman (+1) para obtener una buena salida png (Ubuntu). -D opción permite controlar la resolución.

Estoy buscando un convertidor dvi-> svg que se parece más a lo que estoy buscando. http://dvisvg.sourceforge.net/

dvipng.dvi <- function (object, file, res=600) 
{ 
    if (missing(file)){ 
     invisible(sys(
       paste("dvipng -T tight", "-D", res, shQuote(object$file))) 
      ) 
} 
    else{ 
     invisible(sys(
       paste("dvipng -T tight", "-D", res, "-o", file, shQuote(object$file))) 
      ) 
    } 
} 

tt <- head(iris) 

dvipng.dvi(dvi.latex(latex(xtable(tt))), file='iris.png') 
3

con la respuesta de astronauta, yo era capaz de llegar a una solución que no se base en latex del paquete Hmisc como latex estaba causando algunos problemas de ruta para mí:

table.png <- function(obj, name) { 
first <- name 
name <- paste(name,".tex",sep="") 
sink(file=name) 
cat(' 
\\documentclass{report} 
\\usepackage[paperwidth=5.5in,paperheight=7in,noheadfoot,margin=0in]{geometry} 
\\begin{document}\\pagestyle{empty} 
') 
print(xtable(obj)) 
cat(' 
\\end{document} 
') 
sink() 
texi2dvi(file=name) 
cmd <- paste("dvipng -T tight", shQuote(paste(first,".dvi",sep=""))) 
invisible(sys(cmd)) 
cleaner <- c(".tex",".aux",".log",".dvi") 
invisible(file.remove(paste(first,cleaner,sep=""))) 
} 
+0

'invisible (sys (cmd))' probablemente debería ser ' invisible (sistema (cmd)) ' – mzuba

Cuestiones relacionadas