2011-01-10 25 views
10

En una gráfica de densidad ggplot2 (geom_density) He etiquetas de la siguiente eje yggplot2 eje transformación por el factor constante

  • 0,000
  • 0,005
  • 0,010
  • 0,015
  • 0,020

¿Cuál es la forma correcta de cambiarlos a algo así como

posiblemente con la adición de la automática de "10^3 x densidad" a la etiqueta. En el pasado, simplemente multipliqué mis datos y cambié manualmente la etiqueta, pero en este caso la gráfica de densidad me genera los datos del eje y.

Soy consciente de que puedo escribir cosas como scale_y_continuous(trans="log10"), pero no he encontrado ninguna forma de hacer una constante multiplicativa simple, o definir una transformación personalizada.

Respuesta

12

Se podría añadir el scale_y_continuous(formatter='formatter1000') con la siguiente función definida antes:

formatter1000 <- function(x){ 
    x*1000 
} 

Tenga en cuenta, que la respuesta anterior fue dado hace un año y medio años con una versión ggplot anterior. Con la última versión (0.9) de ggplot, el ejemplo anterior no funciona, intente algo como: scale_y_continuous(labels = formatter1000)

+0

Eso es perfecto. ¿Has encontrado alguna buena documentación sobre formateadores? – Pengin

+0

@Pengin: Desafortunadamente, no. Hay algunos formateadores codificados en ggplot, por ejemplo: coma, científico, porcentaje, dólar, pero puede escribir cualquier cosa con funciones simples como la anterior. – daroczig

+1

Eso es básicamente todo lo que hay, pero en la próxima versión se dividirán en su propio paquete, con algo de documentación. – hadley

20

Esta respuesta no está actualizada para ggplot2 versión 0.90. Ahora, el mismo formato se especificaría (mucho más limpiamente) de esta manera:

scale_y_continuous(labels=function(x)x*1000) 

o si desea utilizar el mismo esquema de etiquetado varias veces:

formatter1000 <- function(){ 
    function(x)x*1000 
} 

scale_y_continuous(labels=formatter1000()) 

Tenga en cuenta que si especifica eje límites usando las funciones xlim y ylim, esto podría no funcionar. En su lugar, use la especificación scale_y_continuous(..., limits=c(0, 1)).

También hay un montón de formatos integrados en el paquete scales, incluidos el formato de coma, el formato de porcentaje, el formato de dólar y el formato de notación científica. Vea su documentation para más detalles.

Espero que ayude a alguien por ahí, ya que este cambio ciertamente me confundió!

+0

Gracias. La documentación del paquete de balanzas no es más que detalles. Lo que hace el paquete de escalas es proporcionar una gran cantidad de funciones de formateo como 'formatter1000' en esta publicación, y para elegir una de ellas, adivina qué hace desde su nombre de función. –

Cuestiones relacionadas