2015-01-12 12 views
7

Mam kilka danych szeregów czasowych do wydruku i chciałbym bardziej szczegółowe zaznaczenia osi. Na przykład:Zwiększ liczbę tyknięć osi w ggplot2 dla dat

library(lubridate) 
library(ggplot2) 
library(scales) 

dat <- data.frame(date = paste0("09-01-", gsub(" ", "0", format(1:30))), 
        stringsAsFactors = FALSE) 
dat$date <- ymd(dat$date) 
dat$y <- rnorm(nrow(dat)) 

p <- ggplot(dat, aes(x = date, y = y)) + geom_point() 

podstawie this post Próbowałem

p + scale_x_continuous(breaks=pretty_breaks(n=10)) 

ale Error: Discrete value supplied to continuous scale. Wszelkie pomysły, jak to zrobić?

Dzięki,

Max

R Under development (unstable) (2014-12-29 r67265) 
Platform: x86_64-apple-darwin10.8.0 (64-bit) 
Running under: OS X 10.9.5 (Mavericks) 

locale: 
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] scales_0.2.4 ggplot2_1.0.0 lubridate_1.3.0 

loaded via a namespace (and not attached): 
[1] colorspace_1.2-4 digest_0.6.4  grid_3.2.0  gtable_0.1.2  
[5] labeling_0.2  MASS_7.3-35  memoise_0.2.1 munsell_0.4.2 
[9] plyr_1.8.1  proto_0.3-10  Rcpp_0.11.2  reshape2_1.4  
[13] stringr_0.6.2 tools_3.2.0 

Odpowiedz

9

Spróbuj zmienić klasę swojej dziedzinie date i korzystania scale_x_date:

dat$date <- as.Date(dat$date) 
p <- ggplot(dat, aes(x = date, y = y)) + geom_point() 
p + scale_x_date(breaks = pretty_breaks(10)) 
+1

Patrz także argumenty 'date_format',' przerw = date_breaks (.. .) 'i' minor_breaks' (wymaga 'biblioteki (skale)'; patrz '? scale_x_date'). – Henrik

+0

Działa świetnie. Dzięki – topepo

Powiązane problemy