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!
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?
Acrescenta o cex.lab como argumento da função hist(). Por exemplo, hist(mtcars$mpg, xlab=“MPG”, ylab=“Densidade”, cex.lab = 1). Abs!
Olá!
Como posso adicionar intervalos de classe escolhidos?
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!
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!
Olá, desculpe a demora.
Não entendi bem a pergunta, quais linhas aparecem no seu histograma?
Pode me mostrar o código?
Abraços