Histograma no R

Fazer um histograma no R é bem simples, basta utilizar o comando hist() com a variável que você quer investigar a distribuição. No entanto, um gráfico detalhado pode necessitar de mais detalhes, seja uma mudança na cor ou a apresentação das medidas de tendência central. Este post apresentará os detalhes que são possíveis de acrescentar no seu histograma utilizando o R.

O dataset utilizado como exemplo é o mtcars. Esse conjunto de dados faz parte do R e não há a necessidade de nenhum tipo de importação.

data(mtcars);
View(mtcars);

Começando com o básico, o código abaixo apresentará um histograma da coluna mpg de mtcars, com as barras na cor azul marinho e bordas pretas:

# histograma com frequencia
hist(mtcars$mpg, col="darkblue", border="black");

histograma_detalhado_1

O padrão do R é apresentar a frequência no eixo y. Se você preferir apresentar a densidade deve acrescentar o argumento prob como sendo verdadeiro:

#histograma com densidade
hist(mtcars$mpg, col="darkblue", border="black", prob=TRUE);

histograma_detalhado_2

Renomear os eixos também é de grande importância, já que além de estarem em inglês, muitas vezes são nomes esquisitos (vide eixo x na figura acima). Para isso usamos os argumentos xlab e ylab:

#histograma com rotulos
hist(mtcars$mpg, col="darkblue", border="black", prob=TRUE, xlab="MPG",
ylab="Densidade");

histograma_detalhado_3

Se achar necessário mudar o comprimento dos eixos, você pode determinar os limites com xlim e ylim:

# alterando maximo e minimo dos eixos
hist(mtcars$mpg, col="darkblue", border="black", prob=FALSE, xlab="MPG",
ylab="Densidade", xlim=c(0,50), ylim=c(0,15));

histograma_detalhado_4

É claro, também precisamos mudar o título do gráfico. Para isso utilizamos o main:

# colocando titulo no grafico
hist(mtcars$mpg, col="darkblue", border="black", prob=TRUE, xlab="MPG",
ylab="Densidade", main="Histograma Cars");

histograma_detalhado_5

Mais interessante ainda será colocar uma linha vertical no gráfico para indicar onde está a média, a mediana ou algum limite que você achar necessário. Para isso, basta acrescentar uma linha de código seguinte à linha em que o histograma é criado:

# linha vertical com mediana
abline(v=median(mtcars$mpg), col="green",lwd=2);

histograma_detalhado_6

# linha vertical com media
abline(v = mean(mtcars$mpg), col = "red", lwd = 2);

histograma_detalhado_7

# linha vertical em um numero especifico
abline(v = 30, col = "orange", lwd = 2);

histograma_detalhado_8

É possível também acrescentar todas as linhas que fizemos acima em um único código. Para isso, é preciso lembrar que no R utilizamos c() para inserir várias variáveis. Aproveitando essa linha de código, vamos mudar o formato das linhas utilizando lty para criar duas tracejadas e o lwd para mudar a espessura de uma das linhas:

# acrescentndo varias linhas verticais
hist(mtcars$mpg, col="darkblue", border="black", prob=TRUE, xlab="MPG",
ylab="Densidade", main="Histograma Cars")

abline(v = c(median(mtcars$mpg), mean(mtcars$mpg), 30),
col = c("blue", "red", "orange"),
lwd = c(2,2,4),
lty=c(1,2,3));

histograma_detalhado_11

Por fim, podemos criar um quadro explicativo para essas linhas criadas. Utilizando legend, vamos seguir o mesmo padrão que utilizamos em abline():

# acrescentando quadro com legenda
legend(x="topright", #posicao da legenda
c("Mediana","Media","Limite"), #nomes da legenda
col=c("blue","red","orange"), #cores
lty=c(1,2,3), #estilo da linha
lwd=c(2,2,4)) #grossura das linhas

histograma_detalhado_12

Se você quiser acrescentar uma curva normal, o procedimento é parecido com a construção das linhas de média e mediana. Porém, utilizamos o lines() e será preciso criar essa linha que se comporta como a normal. O eixo x é simples, é basicamente a extensão da nossa distribuição. Para construir o eixo y – que será basicamente o comportamento da normal – utilize a função dnorm(). Aproveitando esta última dica, utilizamos o breaks para mudar o número de barras do gráfico:

histograma<-hist(mtcars$mpg, breaks = 10, col="darkblue", xlim=c(10,40),main="Histograma MPG");
xfit<-seq(min(mtcars$mpg),max(mtcars$mpg))
yfit<-dnorm(xfit,mean=mean(mtcars$mpg),sd=sd(mtcars$mpg))
yfit <- yfit*diff(histograma$mids[1:2])*length(mtcars$mpg)
lines(xfit, yfit, col="red", lwd=2)

histograma_detalhado_13
Agora você pode deixar seu histograma mais rico e de fácil entendimento. Qualquer dúvida, comentários ou sugestões escreva nos comentários ou envie um e-mail.

Leia também:
Visualizando seus dados: Histograma
Gráficos em R
Mais gráficos no R: qqplot()

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s