Arquivos e gráficos em R

Esse texto é um complemento ao outro post, que apresenta o básico sobre a linguagem R, sendo que agora são explicadas formas de ler e gravar arquivos de dados, assim como os principais pontos de se fazer um gráfico e exportá-lo como uma figura. Segue um script como exemplo das funções que realizam essas tarefas, assim como das opções de argumentos utilizáveis.

Ler e gravar arquivos de dados

A função “read.table()” permite ler um arquivo de dados e guardá-los em uma matriz. A opção “header=TRUE” especifica que a primeira linha é um cabeçalho e que não deve ser incluído na tabela. Veja o exemplo:

Como arquivo de entrada, também pode ser fornecido um link de página na internet. Também é possível definir o separador através da opção “sep”. Já a opção “strip.white=TRUE” remove espaços em branco extras, comum em arquivos com colunas de largura fixas. Da mesma forma trabalha a função “read.csv()” e “read.xls()”.

Para gravar alguma variável em arquivo CSV, utiliza a sintaxe “write.csv(objeto, file = filename)” – caso queira simplesmente em ASCII, retire o “.csv”. São opcionais as opções que definem o separador e a inclusão (TRUE) ou não (FALSE) dos nomes das linhas e colunas (“row.names” e “col.names”, respectivamente). A função “write.table” grava de uma forma mais “organizada”:

Existe também uma forma de gravar toda a saída de texto gerado pela rotina em um arquivo. Para isso, o trecho a ser impresso deve iniciar com o comando sink(“nome_do_arquivo.txt”) e terminar com sink() (sem argumento). Para ir acrescentando o texto no arquivo, utilize também a opção “append = TRUE”.

Gráficos

Plotar gráficos de pontos e linhas é algo muito importante para apresentação dos dados. O comando “plot(x,y)” pode ser utilizado para um gráfico simples. Para sua visualização, também seguem outras linhas de comando, que permitem visualizar o gráfico via terminal Linux:

Para ampliar os recursos do R na confecção de gráficos, são necessários os seguintes pacotes: plyr, ggplot2 e scales. A função “ggplot” permite construir gráficos com muitos recursos, alguns deles utilizados como argumentos de sua função e outros adicionados pelo sinal de “+”. Veja algumas dessas opções:

  • geom_point() – adiciona pontos
  • geom_line() – adiciona linha(s)
  • scale_colour_manual() – utiliza escala de cores definida pelo usuário através de vetor de cores hexadecimal como primeiro argumento (veja uma tabela com nomes e códigos das cores no R clicando no link); também é possível alterar aí o nome da legenda e seus “labels” (rótulos)
  • scale_y_continuous() – edita o eixo y, como inserção de rótulo e definição de valores mínimo, máximo e intervalo (a função “expand_limits()” permite aumentar a visualização do gráfico, por exemplo, até y=0); o nome pode mudar de “continuous” para “discrete” no caso de dados discretos
  • scale_x_date() – edita o eixo x, como inserção/exclusão de rótulo (name=””), indicação de intervalo (data_breaks) e formato do rótulo
  • theme() – define a parte “estética”, como cor, tamanho, ângulo e posição dos textos, inclusive do título (axis.text.x, axis.text.y, legend.title, legend.text, legend.position, plot.title, etc)

Para gravar o gráfico gerado, deve-se colocar a função “png()” (para gravá-lo nesse formato) antes das linhas que geram o gráfico – deve-se colocar como argumento o nome do arquivo, podendo incluir largura e altura. Por último, feche o arquivo usando a função “dev.off()”.

Exemplo

Gráfico gerado em R pelo script de exemplo.
Gráfico gerado em R pelo script de exemplo.

Esse script lê um arquivo com dados observados e outro com dados previstos, ambos no formato de colunas “estacao,data,valor”. São calculados os valores de assertividade (veja mais no post sobre Assertividade) para quatro estações e salvos em uma “data frame” junto com as datas, valores observados, previstos e identificações das estações. Esse objeto é gravado em arquivo CSV e depois é feito o gráfico, que é gravado em formato PNG. Esse gráfico é de assertividade em função do tempo (por isso a variável x recebe os valores como data, ou seja, “as.Date”), e cada sequência corresponde a uma estação. Segue comentado no final uma rotina para reorganizar os dados de saída em um outro formato indicado.

Para imprimir diferentes séries, é necessário que o objeto de entrada esteja no formato “data,variável,valor”, onde a variável é o que definirá o agrupamento (no caso do exemplo, ids). Para criar essa tabela, é possível usar a função “test_data_long = melt(dados, id=”data”)” – para utilizá-la, deve-se instalar o pacote “reshape2”.

Obs: caso o ggplot esteja dentro de um loop, ele todo deve estar dentro de um print(), por exemplo “print(ggplot(df,aes(x,y))+geom_point())”.

Fontes