2012-11-02 6 views
15

Chciałbym mieć ładne etykiety na osi Y. Na przykład wolę mieć 1000 zamiast 1000. Jak mogę to zrobić w ggplot? Oto minimalny przykład:Tysiące separatorów w etykiecie osi X lub Y

x <- data.frame(a=c("a","b","c","d"), b=c(300,1000,2000,4000)) 
ggplot(x,aes(x=a, y=b))+ 
       geom_point(size=4) 

Dzięki za podpowiedź.

Odpowiedz

23

W przypadku pakietów scales dostępne są opcje formatowania: przecinek, dolar, procent. Zobacz przykłady w ?scale_y_continuous.

myślę, że robi to, co chcesz:

library(ggplot2) 
library(scales) 

x <- data.frame(a=c("a","b","c","d"), b=c(300,1000,2000,4000)) 

ggplot(x, aes(x = a, y = b)) + 
    geom_point(size=4) + 
    scale_y_continuous(labels = comma) 
+0

to wszystko. Wielkie dzięki. – giordano

1

prettify tysięcy wykorzystujące dowolny znak z podstawowego format() funkcji:

Przykład 1 (oddzielone przecinkiem).

format(1000000, big.mark = ",", scientific = FALSE) 
[1] "1,000,000" 

Przykład 2 (oddzielona spacją).

format(1000000, big.mark = " ", scientific = FALSE) 
[1] "1 000 000" 

Zastosuj format() do ggplot osie etykiet za pomocą anonimowej funkcji:

ggplot(x, aes(x = a, y = b)) + 
     geom_point(size = 4) + 
     scale_y_continuous(labels = function(x) format(x, big.mark = ",", 
                 scientific = FALSE))