\documentclass[a4paper, oneside, 10pt]{article}
\usepackage[english]{babel}
\usepackage[unicode]{hyperref}
\usepackage[utf8x]{inputenc}
\usepackage{graphicx}
\graphicspath{{media/}}
\usepackage{listings}
\date{\today}
\title{}
\author{}
\begin{document}


\begin{itemize}
  \item Tutorial
  \item Tutorial II
  \item  Exercícios
  \item  Apostila  
\end{itemize}


\section{\texorpdfstring{5. Tutoriais para Criação e Edição de Gráficos no R}{5 Tutoriais para Criaao e Ediao de Graficos no R}}
\label{sec:5_tutoriais_para_criaao_e_ediao_de_graficos_no_r}


\subsection{\texorpdfstring{Orientações Gerais}{Orientaoes Gerais}}
\label{sec:orientaoes_gerais}


Aqui são apenas dados os códigos e funções, para você executar e entender como funcionam. Para entender as funções, leia antes o capítulo correspondente na apostila.  Experimente também mudar mais argumentos e funções além das apresentadas nos exercícios. 

\subsection{\texorpdfstring{Criando Gráficos}{Criando Graficos}}
\label{sec:criando_graficos}


Há duas maneiras de se especificar as variáveis em gráficos:
\begin{itemize}
  \item Cartesiana:  plot(x,y)
\end{itemize}

\begin{itemize}
  \item Fórmula estatística: plot(y\textasciitilde{}x)
\end{itemize}


Experimente as duas para criar alguns gráficos simples:\lstset{frame=single}
\begin{lstlisting}

riqueza <- c(15,18,22,24,25,30,31,34,37,39,41,45)
area <- c(2,4.5,6,10,30,34,50,56,60,77.5,80,85)
area.cate <- rep(c("pequeno", "grande"), each=6)

plot(riqueza~area)
plot(area,riqueza) # o mesmo que o anterior
boxplot(riqueza~area.cate)
\end{lstlisting}



\subsection{\texorpdfstring{Editando Gráficos}{Editando Graficos}}
\label{sec:editando_graficos}


\subsubsection{\texorpdfstring{Parâmetros Globais e locais}{Parametros Globais e locais}}
\label{sec:parametros_globais_e_locais}


Experimente o comando \texttt{par} para modificar alguns parâmetros gráficos. Por exemplo, coloque as legendas dos eixos na vertical com:\lstset{frame=single}
\begin{lstlisting}


 par(las=1)
 plot(riqueza~area)

\end{lstlisting}



 Para aumentar o tamanho dos elementos do gráfico, modifique o parâmetro \texttt{cex}:\lstset{frame=single}
\begin{lstlisting}


par(cex=2)
plot(riqueza~area)

\end{lstlisting}



Em ambos casos, os parâmetro gráficos foram modificados no dispositivo gráfico aberto, ou seja, ficaram retidos como padrão até a modificação do \texttt{par} ou  fechamento do dispositivo. \lstset{frame=single}
\begin{lstlisting}



boxplot(riqueza~area.cate)

\end{lstlisting}



O fechamento dos dispositivos pode ser feito de várias maneiras, fechando a janela gráfica com o mouse, fechando o dispositivo com a função \texttt{ dev.off()} ou fechando todos os dispositivos abertos com a função \texttt{ graphics.off() }. Abaixo, fechamos todos os dispositivos e refazemos o gráfico com o padrão básico do R.\lstset{frame=single}
\begin{lstlisting}

graphics.off()
plot(riqueza~area)


\end{lstlisting}



Alguns parâmetros gráficos só podem ser modificados através dos parâmetros do dispositivo usando o  \texttt{ par() }, outros, podem ser modificados também nas funções de alto nível, aquelas que abrem o dispositivo e iniciam o gráfico como \texttt{ plot(), hist(), boxplot(), image() }\lstset{frame=single}
\begin{lstlisting}


plot(riqueza~area, cex = 2, las = 1)

\end{lstlisting}



Note que pode haver diferenças entre modificar os parâmetros gráficos globalmente ou na função de alto nível. Nesse caso, o \texttt{ cex } só modificou o tamanho do símbolo, enquanto nos parâmetros globais modificou todos os elementos do gráfico (legenda, eixos, títulos, ...).  Nesse último caso, o dispositivo não leva para o próximo gráfico os parâmetros modificados.\lstset{frame=single}
\begin{lstlisting}


boxplot(riqueza~area.cate)

\end{lstlisting}



Alguns outros parâmetros funcionam com alguns funções de alto nível e não com outras. Portanto, deve estar atento para quais parâmetros pode ser modificados localmente, veja o exemplo abaixo:\lstset{frame=single}
\begin{lstlisting}


plot(riqueza~area)
plot(riqueza~area, bty="l", tcl=0.3)

\end{lstlisting}



Percebeu o que mudou?

Agora tente:
\begin{verbatim}
boxplot(riqueza~area.cate, bty="l", tcl=0.3)
\end{verbatim}


O que aconteceu?

E agora?
\begin{verbatim}
par(bty="l")
par(tcl=0.3)
boxplot(riqueza~area.cate)
\end{verbatim}


\subsection{\texorpdfstring{Gráficos Multiplos e Margens}{Graficos Multiplos e Margens}}
\label{sec:graficos_multiplos_e_margens}


O parâmetro \texttt{mfrow} permite que o dispositivo gráfico seja repartido em painéis que recebem diferentes gráficos. Esse é um exemplo de parâmetro que só pode ser modificado pela função \texttt{par()}. Por exemplo, para colocar dois gráficos em um mesmo dispositivo de tela, usamos:\lstset{frame=single}
\begin{lstlisting}


par(mfrow=c(2,1))
plot(riqueza~area)
boxplot(riqueza~area.cate)


par(mfrow=c(1,2))
plot(riqueza~area)
boxplot(riqueza~area.cate)

\end{lstlisting}



Que pode ser combinado com \texttt{mar} para mudar o tamanho das margens também:\lstset{frame=single}
\begin{lstlisting}


par(mfrow=c(2,1), mar=c(4,14,2,6))
plot(riqueza~area)
boxplot(riqueza~area.cate)


par(mfrow=c(1,2))
par(mar=c(14,4,8,2))
plot(riqueza~area)
boxplot(riqueza~area.cate)

par(mfrow=c(1,2))
par(mar=c(8,4,8,1))
plot(riqueza~area)
par(mar=c(14,2,4,0.5))
boxplot(riqueza~area.cate)
\end{lstlisting}



\subsection{\texorpdfstring{Inserindo mais Informações em Gráficos}{Inserindo mais Informaoes em Graficos}}
\label{sec:inserindo_mais_informaoes_em_graficos}


Dentre as várias funções existentes para se inserir informações em gráficos, existem sete que são bastante úteis.

Usando as variáveis:
\begin{verbatim}
riqueza <- c(15,18,22,24,25,30,31,34,37,39,41,45)
area <- c(2,4.5,6,10,30,34,50,56,60,77.5,80,85)
abundancia <- rev(riqueza)
\end{verbatim}


Crie gráficos inserindo os parâmetros abaixo.

\subsubsection{\texorpdfstring{lines()}{lines}}
\label{sec:lines}


Para inserir linhas retas ou curvas não-paramétricas (como \texttt{lowess}, \texttt{loess}, 
\texttt{gam}, etc).\lstset{frame=single}
\begin{lstlisting}

 plot(riqueza~area)
 lines(lowess(area, riqueza))
\end{lstlisting}



Um exemplo já conhecido: sobrepondo uma curva de densidade probabilística empírica a um histograma:\lstset{frame=single}
\begin{lstlisting}

##Duracao em minutos  das erupções do Faithful Geiser, Yellowstone
## Objeto faithful do pacote datasets

hist(faithful$eruptions,prob=TRUE)
lines(density(faithful$eruptions),col="blue")
\end{lstlisting}



\subsubsection{\texorpdfstring{abline()}{abline}}
\label{sec:abline}


Insira uma linha com intercepto e inclinação dados por números com\lstset{frame=single}
\begin{lstlisting}

##100 numeros de uma distribuicao uniforme entre 1 e 10
x <- runif(100, 1, 10)
## Os mesmos numeros somados a um ruído normal de media zero
## e desvio-padrao um:
y <- x+rnorm(100)
##Scatterplot e linha teorica esperada
plot(y~x)
abline(0,1, col="blue")
\end{lstlisting}



Agora veja o que acontece se o argumento da função \texttt{abline} é o objeto resultante do ajuste de uma regressão linear simples, obtido com a função \texttt{lm}\footnote{detalhes na unidade sobre modelos lineares}:\lstset{frame=single}
\begin{lstlisting}

modelo <-  lm(riqueza~area)
plot(riqueza~area)
abline(modelo)
\end{lstlisting}



E há ainda os argumentos \texttt{h} e \texttt{v} para linhas horizontais e verticais. Aqui traçamos as linhas que passam pelas médias de cada variável em um gráfico de dispersão.\lstset{frame=single}
\begin{lstlisting}

plot(riqueza~area)
abline(v=mean(area))
abline(h=mean(riqueza))
\end{lstlisting}



\textbf{Você sabia?} A reta da regressão linear simples sempre passa pelo ponto que é a interseção destas duas linhas. 

\subsubsection{\texorpdfstring{text()}{text}}
\label{sec:text}


Use esta função para inserir texto dentro do gráfico. O texto pode ser uma letra, 
um símbolo (muito usado para mostrar diferenciar classes no gráfico), uma palavra ou até mesmo uma frase:\lstset{frame=single}
\begin{lstlisting}

plot(riqueza~area)
text(x=20,y=40,"texto")
\end{lstlisting}



Você pode usar esta função para identificar identificar pontos em seu gráfico, ou plotar rótulos ao invés de pontos:\lstset{frame=single}
\begin{lstlisting}

require(MASS)# para objeto Animals
head(Animals)# consulte o help para entender
plot(brain~body, data=Animals, log="xy", type="n")
text(y=Animals$brain,x=Animals$body,labels=rownames(Animals))
\end{lstlisting}



\subsubsection{\texorpdfstring{mtext()}{mtext}}
\label{sec:mtext}


Esta função acrescenta texto nas margens do gráfico ou da janela gráfica. Consulte a página de ajuda para entender seus argumentos \lstset{frame=single}
\begin{lstlisting}

plot(riqueza~area)
mtext("legenda no lado errado", side=4, line=0.9, at=20,cex=2, family="serif")
\end{lstlisting}



\subsubsection{\texorpdfstring{par(new=TRUE)}{parnewTRUE}}
\label{sec:parnewtrue}


Comando para sobrepor um novo gráfico a um gráfico já existente. Execute-o e compare com o obtido com o comando \texttt{par(mfrow=c(2,2))}\lstset{frame=single}
\begin{lstlisting}

plot(riqueza~area)
par(new=TRUE)
plot(abundancia~area)
\end{lstlisting}



\subsubsection{\texorpdfstring{axis()}{axis}}
\label{sec:axis}


Para se inserir um eixo novo. Esta função é bastante usada nos casos em que se deseja ter dois gráfico dentro de uma mesma figura (ver \texttt{par(new=TRUE)}), 
ou então se deseja controlar muitos dos parâmetros dos eixos (como em \texttt{mtext()}).\lstset{frame=single}
\begin{lstlisting}

plot(riqueza~area)
par(new=TRUE)
plot(abundancia~area, axes=FALSE, ann=FALSE) ## começa com gráfico sem eixos
axis(4) ## adiciona eixo
\end{lstlisting}



\subsubsection{\texorpdfstring{arrows(), rect(), polygon()}{arrows rect polygon}}
\label{sec:arrows_rect_polygon}


Descubra o efeito destas funções, por exemplo:\lstset{frame=single}
\begin{lstlisting}

plot(riqueza~area)
rect(20,20,40,40)
\end{lstlisting}



\subsection{\texorpdfstring{Salvando Gráficos}{Salvando Graficos}}
\label{sec:salvando_graficos}


Abra um dispositivo \emph{jpg} para armazenar um gráfico, com a função \texttt{jpeg}, execute os comandos para criar o gráfico e fecehe o dispositivo:\lstset{frame=single}
\begin{lstlisting}

jpeg(filename = "Rplotaula.jpg", width = 480, height = 480, 
     units = "px", pointsize = 12, quality = 100,
     bg = "white",  res = NA)

par(mfrow=c(1,2))
par(mar=c(14,4,8,2))
plot(riqueza~area)
boxplot(riqueza~area.cate)

dev.off() ## fecha o dispositivo jpg
\end{lstlisting}



Verifique em seu diretório de trabalho se há agora uma figura \emph{jpg} com o nome ,,Rplotaula.jpg".

Agora abra um dispositivo gráfico cria arquivos com numeração sequencial, envie para ele dois gráficos e feche o dispositivo:\lstset{frame=single}
\begin{lstlisting}

png("meugrafico%02d.png")
plot(riqueza~area)
boxplot(riqueza~area.cate)
dev.off()
\end{lstlisting}



Qual a diferença no resultado deste comando e do anterior?

\subsection{\texorpdfstring{Manipulação de dispositivos gráficos}{Manipulaao de dispositivos graficos}}
\label{sec:manipulaao_de_dispositivos_graficos}


Feche toda as janelas de gráficos do R e execute um comando \texttt{plot}, o que irá abrir um dispositivo gráfico de tela:\lstset{frame=single}
\begin{lstlisting}

plot(riqueza~area)
\end{lstlisting}



Agora abra um novo dispositivo gráfico de tela:\lstset{frame=single}
\begin{lstlisting}

> x11()
\end{lstlisting}



Uma nova janela gráfica em branco se abrirá, na margem superior da qual você verá a indicação de que agora este é o dispositivo ativo, \emph{e.g.}:

\includegraphics[keepaspectratio=true,width=0.8\textwidth]{bie5782/03_apostila/janelas_graficas_ruindous}


Verifique que agora o dispositivo ativo é o de número 3, e ative o dispositivo 2:\lstset{frame=single}
\begin{lstlisting}

dev.cur()
dev.set(which=2)
\end{lstlisting}



Agora um dispositivo gráfico png e outro pdf:\lstset{frame=single}
\begin{lstlisting}

png("figura%02d.png")
pdf("figura%02d.pdf")
\end{lstlisting}



Quantos dispositivos estão abertos? Obtenha a lista com\lstset{frame=single}
\begin{lstlisting}

dev.list()
\end{lstlisting}



Mas apenas umestá ativo, isto é, recebe a saída dos comandos gráficos. Descubra qual é com\lstset{frame=single}
\begin{lstlisting}

dev.cur()
\end{lstlisting}



E altere para o dispositivo 3 com\lstset{frame=single}
\begin{lstlisting}

dev.set(3)
dev.cur() #verificando
\end{lstlisting}



Agora experimente fechar dispositivos com o comando \texttt{dev.off}:\lstset{frame=single}
\begin{lstlisting}

dev.list()
dev.cur()
dev.off() # quem foi fechado?
dev.list() # verificando
dev.cur() # e quem é o ativo agora?
\end{lstlisting}



\subsection{\texorpdfstring{Próximos passos}{Proximos passos}}
\label{sec:proximos_passos}


Para mais informações sobre a edição de gráficos siga para a . Nesse wiki focamos no uso das ferramentas básicas do R e nesse tutorial no pacote \texttt{graphics} carregado por padrão na sessão do R. O pacote para elaboração de gráficos chamado \texttt{ggplot2} vem se tornando muito popular nos últimos anos, mas apresenta uma sintaxe muito diferente da usual no R. Por essa razão preferimos deixá-lo de fora do nosso material. Existem muitos bons tutoriais sobre o \texttt{ggplot2}, inclusive um ótimo feito pelo colaborador da disciplina Gustavo Burin Ferreira, caso tenha interesse acesse:
\begin{itemize}
  \item \url{https://blog.gburin.com/tutorial-de-ggplot2}
\end{itemize}


\end{document}
