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");

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);

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");

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));

É 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");

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);

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

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

É 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));

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

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)


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()

E aí, curtiu o post?

E aí? Gostou do conteúdo? Se inscreva para receber todas as novidades. Deixe seu e-mail em INSCREVA-SE na barra à direita, logo abaixo de pesquisar. E, por favor, não deixe de comentar, dar seu feedback e, principalmente, compartilhar com seus amigos. De verdade, isso faz toda a diferença. Além disso, você também pode acompanhar mais do meu trabalho seguindo a conta de Twitter @UniDosDados, no Instagram @universidadedosdados ou por alguma das redes que você encontra em Sobre o Estatsite / Contato, como meu canal de Youtube Canal Universidade dos Dados.

Aproveite e adquira sua camiseta de data science na LOJA DA UNIVERSIDADE DOS DADOS. Vai ficar estiloso e me ajudar neste projeto!

BONS ESTUDOS!

8 comentários em “Histograma no R”

  1. Eu adicionei a legenda , mas ela ficou muito grande no histograma, como eu posso redimensionar a legenda para um tamanho menor, para ficar mais proporcional ao gráfico?

    1. Acrescenta o argumento ‘breaks=’, dentro da função hist(). Tipo, hist(dados, breaks=10), ou hist(dados, breaks=(5,10,15). Veja se lhe atende e, qualquer problema, me avise. Abraços!

  2. 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!

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *