2012-06-29 46 views
6

Estoy tratando de trazar algunos datos de prueba (mostrar al final de este post), utilizando ggplot con el siguiente comando:Convertir a partir de la notación científica a decimal con ggplot

options(scipen=20)  
ggplot(testData,aes(x=Group.1, y=x), format(scientific=FALSE)) + 
scale_x_discrete(name="Test", formatter=comma) + geom_bar() 

La trama genera bastante bien, pero el eje x está en notación científica (como en los datos de prueba), ¿cómo voy a mostrarlo en decimal en su lugar? (Como se muestra en el comando Ya he probado la opción scipen y varias opciones de formateador - como se sugiere en otras críticas en este sitio)

Mi datos de prueba:

> str(testData) 
'data.frame': 5 obs. of 2 variables: 
$ Group.1: Factor w/ 5 levels "(1.3e+03,1.5e+03]",..: 1 2 3 4 5 
$ x  : num 80000 94000 86000 112000 98000 

> testData 
      Group.1  x 
1 (1.3e+03,1.5e+03] 80000 
2 (1.5e+03,1.7e+03] 94000 
3 (1.7e+03,1.9e+03] 86000 
4 (1.9e+03,2.1e+03] 112000 
5 (2.1e+03,2.3e+03] 98000 

> dput(testData) 
structure(list(Group.1 = structure(1:5, .Label = c("(1.3e+03,1.5e+03]", 
"(1.5e+03,1.7e+03]", "(1.7e+03,1.9e+03]", "(1.9e+03,2.1e+03]", 
"(2.1e+03,2.3e+03]"), class = "factor"), x = c(80000, 94000, 
86000, 112000, 98000)), .Names = c("Group.1", "x"), row.names = c(NA, 
-5L), class = "data.frame") 

La generación de TestData:

testData <- aggregate(as.numeric(as.character(housing7$PRICE)), 
         by=list(cut(as.numeric(as.character(housing7$SIZE)), 
         breaks=5)), FUN=mean) 
+0

Publique su 'testData' con' dput (testData) '. – nograpes

+0

Hecho de esta manera, no sabía ese comando, ¡gracias! – Johnny

+0

Además, ¿cómo se creó ese factor ('testData $ Group.1')? ¿Usaste 'cut' o algo así? – nograpes

Respuesta

6

Una vez que las etiquetas de su factor de se almacenan en notación científica, no es fácil volver a la notación normal.

Dado que utilizó cut para crear este factor, puede cambiar la cantidad de dígitos utilizados en la etiqueta con el argumento dig.lab. Por ejemplo:

testData <- aggregate(as.numeric(as.character(housing7$PRICE)), 
by=list(cut(as.numeric(as.character(housing7$SIZE)), breaks=5,dig.lab=6)), FUN=mean) 
+0

¡Ajá! dig fue excatly lo que estaba buscando! ¡Gracias! Por cierto, ¿hay alguna manera de hacer mis cortes limpios? (como en corte en números enteros) – Johnny

+0

Tenga en cuenta que hubo un error de corchete en ese código, verifique la versión actualizada. – nograpes

+1

Echa un vistazo a '? Cut'. Da un montón de opciones. Intente especificar los saltos que desea en lugar de simplemente 'breaks = 5' como' breaks = c (100,200) '. – nograpes

Cuestiones relacionadas