A continuación representaremos un gráfico similar usando el paquete ggplot2. Cargamos los paquetes necesarios. Añadimos scales para el formato usado en scale_y_continuous.
library(ggplot2)
library(scales)
Creamos la distribución de Benford. Como usaremos ggplot, necesitamos crear un data frame a partir del vector.
benford <- log10(1+1/(1:9))
benford <- data.frame(d = 1:9, p = benford)
benford
d p
1 1 0.30103000
2 2 0.17609126
3 3 0.12493874
4 4 0.09691001
5 5 0.07918125
6 6 0.06694679
7 7 0.05799195
8 8 0.05115252
9 9 0.04575749
Versión 1
benford$d <- factor(benford$d, levels = c(9:1))
ggplot(data = benford, aes(x = d, y = p)) +
geom_bar(stat = 'identity', fill = "steelblue") +
xlab("Dígitos") +
ylab("Ley de Benford") +
coord_flip() + # Horizontal
scale_y_continuous(labels = percent)
Prácticamente hemos conseguido el formato del primer gráfico. Sin embargo, debemos modificar el color de fondo, las líneas de división verticales y las marcas del eje.
Versión 2
ggplot(data = benford, aes(x = d, y = p)) +
geom_bar(stat = 'identity', fill = "steelblue") + # 1
xlab("Dígitos") +
ylab("Ley de Benford") +
coord_flip() + # Horizontal
scale_y_continuous(labels = percent_format(),
breaks =seq(0, 0.35, 0.05),
minor_breaks = NULL) +
theme(panel.grid.minor.y = element_blank(),
panel.grid.major.x = element_line(colour = "grey", linetype = 3),
panel.background=element_blank())
Hola, muchas gracias por el post.
ResponderEliminarEstaba intentando combinar en un gráfico lo siguiente.
scale_y_continuous(breaks=0:20*2.5) +
scale_y_continuous(labels=percent) #de la librería "scales"
pero parece que son incompatibles. Me estaba volviendo loco buscando una solución hasta que he descubierto tu blog.
Saludos.
Hola Raúl, me alegro de que te fuera de utilidad. Al añadir dos scale_y_continuous, la segunda reemplaza a la anterior.
EliminarGracias por el comentario y saludos.