2012-06-29 9 views
6

Usiłuję wykreślić niektóre dane testowe (pokaż na końcu tego postu), używając ggplot pomocą następującego polecenia:Convert to z notacji naukowej na dziesiętne z ggplot

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

Działka generuje na tyle dobrze, ale oś X jest w notacji naukowej (jak w danych testowych), jak miałbym wyświetlać ją w systemie dziesiętnym? (jak pokazano na komendzie ja już próbowałem scipen opcję i różne opcje formater - jak sugerowano w innych postach na tej stronie)

Moje dane testowe:

> 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") 

Pokolenie testdata:

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

Opublikuj swoje 'testData' za pomocą' dput (testData) '. – nograpes

+0

Niniejszym dokonałem, nie znałem tego polecenia - dzięki! – Johnny

+0

Również, w jaki sposób stworzyłeś ten czynnik ('testData $ Group.1')? Czy używałeś 'cut' lub czegoś? – nograpes

Odpowiedz

6

gdy etykiety swojej czynnikiem są zapisywane w notacji naukowej, nie jest łatwo wrócić do normalnej notacji.

Od kiedy użyłeś cut do utworzenia tego współczynnika, możesz zmienić liczbę cyfr użytych na etykiecie z argumentem dig.lab. Na przykład:

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

Aha! kopać było excatly, czego szukałem! Dzięki! BTW, jakikolwiek sposób, aby moje cięcia były czyste? (jak w przypadku cięcia w liczbach całkowitych) – Johnny

+0

Należy zauważyć, że w tym kodzie wystąpił błąd wspornika, należy sprawdzić zaktualizowaną wersję. – nograpes

+1

Sprawdź "? Cut". Daje kilka opcji. Spróbuj podać żądane przerwy zamiast "breaks = 5", np. 'Breaks = c (100,200)'. – nograpes

Powiązane problemy