2010-05-25 9 views
9

Wenn Sie eine Protokollskalierung auswählen, formatiert ggplot2 die Brüche wie 10^x. Ich möchte, dass es das nicht tut. Zum Beispiel kann der Code unten sollte eine Kurve mit Zecken bei 1, 2, 5 usw. angezeigt werden, nicht mehr als 10^0, 10^0,3, 10^0,69 usw.Wie überschreiben Sie die Achsenformatierung von ggplot2?

library(ggplot2) 
dfr <- data.frame(x = 1:100, y = rlnorm(100)) 
breaks <- as.vector(c(1, 2, 5) %o% 10^(-1:1)) 
p1 <- ggplot(dfr, aes(x, y)) + geom_point() + scale_y_log10(breaks = breaks) 
print(p1) 

Ich glaube, dass das Hinzufügen eines formatter Argument scale_y_log10 würde den Trick machen, aber ich bin mir nicht sicher, was ich in das Argument einbringen soll oder wo die Optionen dokumentiert sein könnten.

Antwort

8

scale_y_log10(breaks = breaks, labels = breaks sollte den Trick tun.

+0

Ah. Einfach, wenn Sie wissen wie. Vielen Dank. –

4

Ab ggplot2 Version 0.9.0 ist dieses Verhalten (Formatieren der Achsenbeschriftungen als 10^0) nicht mehr der Standardwert. Der Code in der Frage gibt jetzt das gewünschte Ergebnis.

library(ggplot2) 
dfr <- data.frame(x = 1:100, y = rlnorm(100)) 
breaks <- as.vector(c(1, 2, 5) %o% 10^(-1:1)) 
p1 <- ggplot(dfr, aes(x, y)) + geom_point() + scale_y_log10(breaks = breaks) 
print(p1) 

enter image description here