r - values - scale y axis ggplot
ggplot2 y eje etiqueta precisiĆ³n decimal (1)
Estoy trazando varios gráficos ggplot en un bucle (lo sé, lo sé, no uso el bucle plyr ... pero) y tenía curiosidad si había una manera de establecer la precisión decimal para decir un decimal (es decir, 0.0). Estoy usando la siguiente transformación de escala.
p <- p + scale_y_log10()
Cualquier ayuda sería apreciada.
Tenía la impresión de que un decimal (es decir, 1.2) era el valor predeterminado, pero si ve más decimales, puede pasar su propio formato a la escala:
fmt_dcimals <- function(decimals=0){
# return a function responpsible for formatting the
# axis labels with a given number of decimals
function(x) as.character(round(x,decimals))
}
Y luego agrega la escala a tu parcela:
ggplot( ... ) + scale_y_log10(labels = fmt_dcimals(2))
Ahora que pienso en esto, debo agregar que si realmente va a escribir su propio formateador, probablemente debería seguir usando la función de format
para hacer el trabajo, en lugar de redondear y coaccionar. Eso es probablemente más seguro y "mejor".
Como ejemplo, para forzar dos dígitos después del decimal, puedes cambiar esta función de formato a algo como esto:
fmt_dcimals <- function(decimals=0){
function(x) format(x,nsmall = decimals,scientific = FALSE)
}
y puedes seguir jugando con los argumentos de nsmall
y digits
para format
y obtener lo que quieres, creo. Un ejemplo de su uso:
df <- data.frame(x = 1:5,y = rexp(5))
ggplot(df,aes(x = x,y=y)) +
geom_point() +
scale_y_log10(labels = fmt_dcimals(2))