2013-03-02 1 views
11

Kiedy spróbuję którejkolwiek z poniższych wartości, skala osi to 1e + 03, 1e + 06, 1e + 09 - czy możliwe jest ładowanie superskryptów 10^3, 10^6, 10^9 zamiast tego bez ręcznego etykietowania? Wydaje mi się, że pamiętam, jak to się stało w przeszłości.Etykiety o dość dużej osi do skali logarytmicznej w ggplot

qplot(1:10, 10^(1:10))+scale_y_log10() 
qplot(1:10, 10^(1:10), log='y') 

Odpowiedz

27

Można użyć trans_breaks() i trans_format() z biblioteki scales uzyskać żądane formatowanie wartości osi.

library(scales) 
qplot(1:10, 10^(1:10)) + 
    scale_y_log10(breaks = trans_breaks("log10", function(x) 10^x), 
       labels = trans_format("log10", math_format(10^.x))) 

enter image description here

+0

jak można dodać kreski pomiędzy 10 i 1000 (na przykład 200, 500 i 700) na osi y? –

+0

Myślę, że to, czego szukasz, to: "p + annotation_logticks()" Aby zapoznać się z linkiem http://ggplot2.tidyverse.org/reference/annotation_logticks.html – dabsingh