¿Cómo cambio el formato de los números en un eje con ggplot?

Estoy usando R y ggplot para dibujar un diagtwig de dispersión de algunos datos, todo está bien excepto que los números en el eje y están saliendo con el formato de exponente de estilo de computadora, es decir, 4e + 05, 5e + 05, etc. Esto es obviamente inaceptable, por lo que quiero que se muestre como 500,000, 400,000, etc. Obtener una notación de exponente adecuada también sería aceptable.

El código para la ttwig es el siguiente:

p <- ggplot(valids, aes(x=Test, y=Values)) + geom_point(position="jitter") + facet_grid(. ~ Facet) + scale_y_continuous(name="Fluorescent intensity/arbitrary units") + scale_x_discrete(name="Test repeat") + stat_summary(fun.ymin=median, fun.ymax=median, fun.y=median, geom="crossbar") 

Cualquier ayuda muy apreciada.

Otra opción es formatear sus tags de eje con comas usando las scales del paquete, y agregar

  scale_y_continuous(name="Fluorescent intensity/arbitrary units", labels = comma) 

a su statement de ggplot.

Si no quiere cargar el paquete, use:

 scale_y_continuous(name="Fluorescent intensity/arbitrary units", labels = scales::comma) 

También encontré otra forma de hacer esto que da la notación adecuada ‘x10 (superíndice) 5’ en los ejes. Lo estoy publicando aquí con la esperanza de que pueda ser útil para algunos. Obtuve el código de aquí, así que no reclamo ningún crédito por ello, que con razón va para Brian Diggs.

 fancy_scientific <- function(l) { # turn in to character string in scientific notation l <- format(l, scientific = TRUE) # quote the part before the exponent to keep all the digits l <- gsub("^(.*)e", "'\\1'e", l) # turn the 'e+' into plotmath format l <- gsub("e", "%*%10^", l) # return this as an expression parse(text=l) } 

Que puedes usar como

 ggplot(data=df, aes(x=x, y=y)) + geom_point() + scale_y_continuous(labels=fancy_scientific) 
 x <- rnorm(10) * 100000 y <- seq(0, 1, length = 10) p <- qplot(x, y) library(scales) p + scale_x_continuous(labels = comma) 

Llegué tarde al juego aquí, pero en caso de que otros quieran una solución fácil, creé un conjunto de funciones que se pueden llamar así:

  ggplot + scale_x_continuous(labels = human_gbp) 

que le dan números legibles para los ejes x o y (o cualquier número en general realmente).

Puede encontrar las funciones aquí: Github Repo Simplemente copie las funciones en su secuencia de comandos para que pueda llamarlas.

Encuentro útil la respuesta sugerida por Jack Aidley.

Quería tirar otra opción. Supongamos que tiene una serie con muchos números pequeños, y desea asegurarse de que las tags de los ejes escriban el punto decimal completo (por ejemplo, 5e-05 -> 0.0005), luego:

 NotFancy <- function(l) { l <- format(l, scientific = FALSE) parse(text=l) } ggplot(data = data.frame(x = 1:100, y = seq(from=0.00005,to = 0.0000000000001,length.out=100) + runif(n=100,-0.0000005,0.0000005)), aes(x=x, y=y)) + geom_point() + scale_y_continuous(labels=NotFancy)