Respuestas:
Utilizar:
+ scale_y_continuous(labels = scales::percent)
O, para especificar parámetros de formato para el porcentaje:
+ scale_y_continuous(labels = scales::percent_format(accuracy = 1))
(el comando labels = percent
está obsoleto desde la versión 2.2.1 de ggplot2)
scales::percent(accuracy = 1)
que no funciona es porque las *_format()
versiones crean una función en lugar de ... lo que percent()
crea solo, ¿es correcto?
En principio, puede pasar cualquier función de reformateo al labels
parámetro:
+ scale_y_continuous(labels = function(x) paste0(x*100, "%")) # Multiply by 100 & add %
O
+ scale_y_continuous(labels = function(x) paste0(x, "%")) # Add percent sign
Ejemplo reproducible:
library(ggplot2)
df = data.frame(x=seq(0,1,0.1), y=seq(0,1,0.1))
ggplot(df, aes(x,y)) +
geom_point() +
scale_y_continuous(labels = function(x) paste0(x*100, "%"))
ggplot2
y los scales
paquetes pueden hacer eso:
y <- c(12, 20)/100
x <- c(1, 2)
library(ggplot2)
library(scales)
myplot <- qplot(as.factor(x), y, geom="bar")
myplot + scale_y_continuous(labels=percent)
Parece que la stat()
opción se ha eliminado, lo que provoca el mensaje de error. Prueba esto:
library(scales)
myplot <- ggplot(mtcars, aes(factor(cyl))) +
geom_bar(aes(y = (..count..)/sum(..count..))) +
scale_y_continuous(labels=percent)
myplot
Tomado de @Deena arriba, esa modificación de funciones para etiquetas es más versátil de lo que podría haber pensado. Por ejemplo, tenía un ggplot donde el denominador de las variables contadas era 140. Usé su ejemplo así:
scale_y_continuous(labels = function(x) paste0(round(x/140*100,1), "%"), breaks = seq(0, 140, 35))
Esto me permitió obtener mis porcentajes en el denominador 140 y luego romper la escala en incrementos del 25% en lugar de los números extraños que tenía por defecto. La clave aquí es que los saltos de escala todavía están establecidos por el recuento original, no por sus porcentajes. Por lo tanto, las rupturas deben ser desde cero hasta el valor del denominador, siendo el tercer argumento en "rupturas" el denominador dividido por todas las rupturas de etiqueta que desee (por ejemplo, 140 * 0.25 = 35).
library(scales)
para esto.