ggplot2, como mudar o histograma?
Estou tentando aprender R e comecei isso lendo o livro "Programação prática com R". Encontrei um problema e não consigo continuar porque me incomoda muito. Como exercício, devo experimentar o pacote ggplot2 e fazer um histograma. O código a ser usado é o seguinte:
x <- c(1, 2, 2, 2, 3, 3)
qplot(x, binwidth = 1)
e o histograma deve ser semelhante ao da figura um. No entanto, quando executo o código, meu histograma não se parece com o da figura (embora devesse) e se parece com o da figura 2. É basicamente o mesmo, mas 0,5 decimais à esquerda de onde deveria estar.
Alguns podem me dizer por que o histograma não parece o mesmo da figura 1 e como consertar o código para que fique assim?
Imagem 1: https://i.stack.imgur.com/dssBQ.jpg Imagem 2: https://i.stack.imgur.com/wUk1i.jpg
Respostas
Estou usando ggplot2_3.3.2 com R versão 4.0.3.
Recebo o mesmo gráfico que você, em vez do gráfico conforme estabelecido em https://rstudio-education.github.io/hopr/packages.html#packages-1.
Não consegui descobrir qual versão do ggplot é usada no livro, possivelmente por volta de 2014 com base em parte do texto. Tendo em mente o comentário de @ the_one_neuron, suspeito que isso tenha algo a ver com as mudanças no ggplot2 desde que o livro foi escrito.
O problema é categorizar ou mais coloquialmente 'portas e postagens': você deseja que o valor 1 seja categorizado entre 1 e <2 (centralizado em 1.5) em vez de entre 0 e 1 (centralizado em 0,5).
Há uma explicação muito mais detalhada de @ r2evans em Por que geom_histogram começa no limite inferior de bin negativo mesmo que todos os valores sejam> 0? .
De qualquer forma, aqui está uma falha para obter o resultado semelhante ao seu gráfico esperado.
library(ggplot2)
x <- c(1, 2, 2, 2, 3, 3)
qplot(x, binwidth = 1, breaks = 1:4 - 0.000001, xlim = c(0, 4))
Criado em 2021-01-15 pelo pacote reprex (v0.3.0)
Você poderia tentar fazer algo assim. Não é perfeito mas está muito próximo
qplot(x, binwidth = 1, xlim =c(0,NA), ylab = "count")