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 salen con formato de exponente de estilo de computadora, es decir, 4e + 05, 5e + 05, etc. Esto es obviamente inaceptable, así que quiero que se muestre como 500,000, 400,000, y así sucesivamente. 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.
ggplot
opciones predeterminadas como "obviamente inaceptables". Quiere decir que tiene una preferencia personal por un formato diferente. Un número en el formato4e+05
es notación científica, y sería el formato preferido en una amplia variedad de aplicaciones.Respuestas:
Otra opción es formatear las etiquetas de marca de eje con comas mediante el uso del paquete
scales
y agregara su declaración ggplot.
Si no desea cargar el paquete, use:
fuente
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 eso, que con razón va a Brian Diggs.
Que luego puedes usar como
fuente
format(...)
línea:l <- gsub("0e\\+00","0",l)
gsub()
directamente después deformat()
, mientras prueba lo queformat()
regresa para su caso en una consola separada.gsub
comando:# remove + after exponent, if exists. E.g.: (3x10^+2 -> 3x10^2)
l <- gsub("e\\+","e",l)
y después de él:# convert 1x10^ or 1.000x10^ -> 10^
l <- gsub("\\'1[\\.0]*\\'\\%\\*\\%", "", l)
para hacerlo en formato que generalmente se usa en documentos.fuente
library(scales)
y usar elcomma
que debería funcionar mejor que la función que tenía antes.Llego 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í:
que le dan números legibles por humanos 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 script para que pueda llamarlas.
fuente
Encuentro que la respuesta sugerida de Jack Aidley es útil.
Quería tirar otra opción. Supongamos que tiene una serie con muchos números pequeños y desea asegurarse de que las etiquetas del eje escriban el punto decimal completo (por ejemplo, 5e-05 -> 0.0005), luego:
fuente
scale_y_continuous(labels=function(n){format(n, scientific = FALSE)})
qué no hay un formateador predefinido como ese, el infierno lo sabe.