superponer - ¿Cómo cambio el formato de los números en un eje con ggplot?
superponer graficas en r ggplot (5)
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 etiquetas 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)
Estoy usando R y ggplot para dibujar un diagrama 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 trama 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.
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.
Otra opción es formatear sus etiquetas de eje con comas usando las scales
del paquete, y agregar
scale_y_continuous(name="Fluorescent intensity/arbitrary units", labels = comma)
a su declaración 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 here 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)