2012-02-15 9 views

risposta

7

Esistono vari script di conversione LaTeX-to-Image, progettati per eseguire operazioni come convertire equazioni in immagini da includere nelle pagine Web.

Se è possibile trovare uno di questi (dvipng forse?), Allora è possibile passare da una tabella in R a LaTeX abbastanza semplice e quindi da LaTeX a png.

Se avete dvipng, è possibile sfruttare le conversioni di lattice di Hmisc per fare una funzione più ordinato di farlo:

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)) 
} 

E allora si può fare:

> 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))) 

E questo produrrà un png file con un nome casuale nella directory di lavoro. L'opzione -T tight taglierà tutti gli spazi bianchi da intorno ad esso.

che è circa il più diretto posso pensare possibile.

Linux o Windows o Mac o Atari?

+0

di Windows, preferibilmente. –

+0

Beh, se Hmisc funziona nel sistema e dvipng è incluso nel vostro TeX, allora la mia soluzione potrebbe funzionare ... – Spacedman

+0

Vedo un file DVI nella directory (non hanno familiarità con questo formato), ma non PNG. –

0

Non ho una buona risposta che includa l'uso di R, ma se fossi disperata, suppongo che una "schermata di stampa" e una copia di Paint o altro programma di questo tipo e, infine, salvandolo, almeno ti ottengano l'immagine in un formato memorizzabile.

Ho creato la documentazione dell'utente "passo dopo passo" in questo modo quando non erano disponibili altre opzioni.

5

xtable fornisce l'opzione di uscita sia lattice o html markup. Puoi inserire direttamente il codice HTML.

Detto questo anch'io vorrei essere in grado di passare direttamente da knit o sweave a png o svg. Stavo cercando di farlo proprio la scorsa settimana. Sto costruendo una infografica inkscape (svg) e ho cercato un modo per inserire un'immagine collegata di una tabella che aggiorna eseguendo il codice R.

Nel test iniziale ho combinato l'uso del codice xtable e Spacedman (+1) per ottenere un buon output png (Ubuntu). L'opzione -D consente il controllo della risoluzione.

Sto cercando un convertitore dvi-> svg che è più simile a quello che sto cercando. 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 risposta di Spaceman, sono stato in grado di trovare una soluzione che non si basa su latex dal pacchetto Hmisc come latex stava causando alcuni problemi di percorso per me:

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))' dovrebbe probabilmente essere ' invisibile (sistema (cmd)) ' – mzuba

Problemi correlati