2012-06-29 6 views
6

Ich versuche, (am Ende dieses Beitrags zeigt) einige Testdaten zu zeichnen, mit ggplot mit dem folgenden Befehl:Konvertieren von wissenschaftlicher Notation mit ggplot dezimal

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

Das Grundstück gut genug erzeugt, aber die X-Achse ist in wissenschaftlicher Notation (wie in den Testdaten), wie würde ich es stattdessen auf dezimale Anzeige gehen? (wie im Befehl gezeigt habe ich versucht, bereits die scipen Option und verschiedene Optionen Formatierer - vorgeschlagen wie auf dieser Seite in anderen Beiträgen)

Meine Testdaten:

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

Die Erzeugung von Testdaten:

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

Veröffentlichen Sie Ihre 'testData' mit' dput (testData) '. – nograpes

+0

Hiermit fertig, kannte diesen Befehl nicht - danke! – Johnny

+0

Wie haben Sie diesen Faktor erstellt ('testData $ Group.1')? Hast du 'cut' oder sowas benutzt? – nograpes

Antwort

6

Sobald die Etiketten Ihrer Faktor in der wissenschaftlichen Schreibweise gespeichert sind, ist es nicht einfach wieder normal Notation zu gehen.

Da Sie verwendet haben, um diesen Faktor zu erstellen, können Sie die Anzahl der Ziffern ändern, die im Etikett mit dem dig.lab Argument verwendet werden. Zum Beispiel:

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! graben war genau was ich suchte! Vielen Dank! Übrigens, kann ich meine Schnitte sauber machen? (wie in ganzen Zahlen geschnitten) – Johnny

+0

Beachten Sie, dass es einen Klammerfehler in diesem Code gab, überprüfen Sie die aktualisierte Version. – nograpes

+1

Check out '? Cut'. Es gibt eine Reihe von Optionen. Versuchen Sie, die gewünschten Pausen anzugeben, anstatt nur »Pausen = 5« wie »Pausen = c (100,200)«. – nograpes