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

7 comentários

  1. Como eu retiro as linhas de um gráfico?
    por exemplo fiz par(new=TRUE),depois acrescentei os hists de 15 , mas ficou poluído visualmente, digo,gostaria de retirar as linhas…como eu faria isso?

    Desde já agradeço!

    Curtir

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 )

Conectando a %s