Domanda

Sto provando a creare un rapporto di sweave che contiene alcune grafiche eseguite con GGPlot2.Anche se sto cercando un ambiente per il lungo periodo - uso solo un semplice file .rnw qui che contiene solo il codice e la trama

 \documentclass[a4paper]{article}
 \SweaveOpts{echo=FALSE}
 \usepackage{a4wide}

  \begin{document}

  \begin{figure}[htbp]
  \begin{center}
 <<>>=
 library(ggplot2)
 x=rnorm(100)
 qplot(x)

 @
 \caption{My Graph}
 \end{center}
  \end{figure}
\end{document}
.

Sfortunatamente il grafico non viene creato, ottengo solo un file .pdf e .eps danneggiato.Anche se ottengo un bel file .tex che sembra funzionare tranne per la grafica. Io uso il seguente codice di base per crearlo:

 Sweave("myfile.Rnw")
.

Ho appena trovato alcuni post più anziani sul Web che stavano discutendo di problemi con trasparenza e sweave / ggplot2 ma nulla che potesse aver aiutato.Ho anche provato il pacchetto rilassato, che non ha avuto alcun aiuto.BTW, c'è qualche notizia sul pacchetto Decumar?

È stato utile?

Soluzione

qplot() produce oggetti, non un'uscita grafica.Potrebbe sembrare che lo faccia quando lo esegui, ma questo è perché senza assegnazione, r sta stampando automaticamente l'output di qplot().Per integrarlo in Sweave, avvolgere print() intorno a qplot() o assegnare l'output di qplot() a qualcosa, quindi avvolgilo in print().

...
<<fig = T, echo = F>>=
 library(ggplot2)
 x=rnorm(100)
 p <- qplot(x)
 print(p)
@
...
.

che dovrebbe funzionare.Io uso la grafica ggplot2 nei miei documenti di sweave tutto il tempo.

Altri suggerimenti

Devi avvolgerlo intorno a print() per farlo funzionare in Sweave.

In realtà, mentre entrambe le risposte precedenti sono corrette, il tuo problema è qualcos'altro.

È necessario assicurarsi che l'intero blocco di codice sia a sinistra della pagina (a parte Iundentation nelle funzioni).Ancora una volta, non ho idea del perché, ma questo provoca problemi per la sweave.

Dopo aver assicurato che tutto il codice (e l'intestazione / piè di pagina per il codice del codice) fossero a sinistra della pagina (e aggiungendo un'istruzione di stampa), il tuo esempio funziona per me.

Incidentalmente, ho imparato oggi che puoi creare un ambiente attorno al tuo codice nei documenti del Sweave (che non ero a conoscenza, e mi salverà molto tempo).Buon vecchio stackoverflow, insegnandoti qualcosa di nuovo anche quando rispondi a una domanda!

Spero che questo aiuti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top