Pergunta

Estou tentando criar um relatório sweave que contém alguns gráficos feitos com ggplot2.Embora eu esteja procurando algum ambiente para o longo prazo – eu apenas uso um arquivo .Rnw simples aqui que contém apenas o código e o gráfico

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

Infelizmente, o gráfico não foi criado, só recebo um arquivo .pdf e .eps corrompido.Embora eu receba um arquivo .tex legal que parece funcionar, exceto pelos gráficos.Eu uso o seguinte código básico para criá-lo:

 Sweave("myfile.Rnw")

Acabei de encontrar uma postagem antiga na web que discutia problemas com transparência e sweave/ggplot2, mas nada que pudesse ter ajudado.Também experimentei o pacote relaxado, que também não ajudou.Aliás, há alguma novidade sobre o pacote decumar?

Foi útil?

Solução

qplot() produz objetos, não uma saída gráfica.Pode parecer que sim quando você o executa, mas isso ocorre porque sem atribuição, R está imprimindo automaticamente a saída de qplot().Para integrá-lo ao Sweave, envolva print() em volta qplot(), ou atribua a saída de qplot() para alguma coisa, então embrulhe isso em print().

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

Isso deve funcionar.eu uso ggplot2 gráficos em meus documentos do Sweave o tempo todo.

Outras dicas

Você tem que envolver isso print() para fazê-lo funcionar perfeitamente.

Na verdade, embora ambas as respostas anteriores estejam corretas, o seu problema é outra coisa.

Você precisa garantir que todo o bloco de código esteja à esquerda da página (exceto a identificação nas funções).Novamente, não tenho ideia do porquê, mas isso causa problemas para o Sweave.

Depois de garantir que todo o código (e cabeçalho/rodapé para parte do código) estava à esquerda da página (e adicionar uma instrução de impressão), seu exemplo funciona para mim.

Aliás, aprendi hoje que você pode criar um ambiente em torno do seu código em documentos sweave (o que eu não sabia e que vai me poupar muito tempo).O bom e velho stackoverflow, ensinando algo novo mesmo quando você responde a uma pergunta!

Espero que isto ajude.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top