Los histogramas por defecto en ggplot2 y en R base son diferentes, ya que ggplot2 utiliza 30 clases mientras que la función hist de R base usa el método de Sturges para calcular el número de clases.
Como puedes ver, los histogramas de ggplot2 tienden a tener demasiadas clases por defecto. Puedes cambiar el ancho de las barras o el número de clases al valor que quieras.
# install.packages("ggplot2")
library(ggplot2)
# Datos
set.seed(3)
x <- rnorm(450)
df <- data.frame(x)
# Histograma por defecto en ggplot2
ggplot(df, aes(x = x)) + 
  geom_histogram()
Los histogramas por defecto con la función hist son más adecuados, ya que se utiliza el método de Sturges.
# Datos
set.seed(3)
x <- rnorm(450)
df <- data.frame(x)
# Histograma por defecto en R base
hist(x)
Si quieres crear un histograma en ggplot2 que use el método de Sturges puedes calcular los puntos de corte de la siguiente manera y pasarlos al argumento breaks.

# install.packages("ggplot2")
library(ggplot2)
# Datos
set.seed(3)
x <- rnorm(450)
df <- data.frame(x)
# Calcular los puntos de corte
breaks <- pretty(range(x),
                 n = nclass.Sturges(x),
                 min.n = 1)
df$breaks <- breaks
# Histograma con el método de Sturges
ggplot(df, aes(x = x)) + 
  geom_histogram(color = 1, fill = "white",
                 breaks = breaks) +
  ggtitle("Método de Sturges")También te puede interesar