Animações em documentos PDF produzidos com Sweave

June 15, 2011
By

This post was kindly contributed by Ridículas - go there to comment and to read the full post.

Animação que representa as probabilidades obtidas pela tabela da distribuição normal padrão.

O pacote do animate do \LaTeX, desenvolvido por Alexander Grahn, permite que sejam inseridas animações em documentos PDF. Esses arquivos devem ser visualizados em leitores de PDF da Adobe. No Linux podemos usar o acroread.

O procedimento é simples. Vou fazer isso em um documento Sweave. Primeiro confeccionamos diversas figuras que formam uma seqüência de ações. Tais figuras podem ser feitas com controladores de fluxo como a função for() e similares. Inclusive, o pacote animation do R, desenvolvido por Yihui Xie, oferece implementações para confecção de animações. As figuras são salvas em um diretório. Para adicioná-las ao documento na forma de animação (com botões de play, stop) basta usar o comando \animategraphics{}.

O arquivo Sweave abaixo (*.Rnw) gera um arquivo PDF com a tabela da distribuição normal padrão e uma animação que representa a área integrada correspondente aos valores da tabela. Veja o PDF. Para gerar gifs animados como R veja o artigo do Mark Heckmann no R you ready?. Até a próxima ridícula.

\documentclass[a4paper]{article}
\usepackage[brazil]{babel}
\usepackage{Sweave}
\usepackage{animate}
\thispagestyle{empty}

\begin{document}

\begin{center}
{\Large Tabela da distribui\c{c}\~{a}o normal padr\~{a}o}\\ \vspace{2ex}
{\large Walmes Zeviani -- LEG/UFPR}  \\
\end{center}

<<echo=false, results=hide>>=
#-----------------------------------------------------------------------------
dir.create("exemplos")
png(file="exemplos/qnorm%1d.png", width=500, height=250)
par(mar=c(4,4,1,1))
for(q in seq(0, 4,l=100)){
  curve(dnorm(x, 0, 1), -5, 5, ylab="f(z)", xlab="z")
  x <- seq(0, q, by=0.01)
  fx <- dnorm(x, 0, 1)
  polygon(c(x, rev(x)),
          c(fx, rep(0, length(fx))),
          col="gray90")
  abline(v=0, lty=2)
  Pr <- round(pnorm(q, 0, 1)-0.5, digits=3)
  qq <- round(q, digits=3)
  legend("topleft", bty="n", fill="gray90",
         legend=substitute(P(0<~Z<=~q)==Pr, list(q=qq, Pr=Pr)))
}
dev.off()
#-----------------------------------------------------------------------------
@ 

<<echo=false, results=hide>>=
#-----------------------------------------------------------------------------
require(xtable)
options(OutDec=",")
q <- seq(0,3.99,by=0.01)
p <- pnorm(q)-0.5
m <- matrix(p, byrow=TRUE, ncol=10)
rownames(m) <- gsub("\\.", ",", formatC(seq(0,3.9,0.1), dig=1, format="f"))
colnames(m) <- 0:9/100
#-----------------------------------------------------------------------------
@

\begin{center}
\animategraphics[controls, loop, width=0.75\textwidth]{10}{exemplos/qnorm}{1}{100}
\end{center}

\begin{center}
\small\addtolength{\tabcolsep}{-3pt}
{\footnotesize
<<echo=false, results=tex>>=
#-----------------------------------------------------------------------------
print(xtable(m, digits=5), floating=FALSE)
#-----------------------------------------------------------------------------
@
}
\end{center}
\end{document}

Tags: , , , , , , , , ,

Comments are closed.