ggplot2 scale相關設置2—時間設置


 

在scale設置中,常用的日期方面的設置函數包括:

scale_x_date(),scale_y_date(),scale_x_datetime(),scale_y_datetime()
 
接下來,我了解下函數的參數部分:
以scale_x_date()為例
 
scale_x_date(name = waiver(), breaks = waiver(), date_breaks = waiver(), labels = waiver(), date_labels = waiver(), minor_breaks = waiver(), date_minor_breaks = waiver(), limits = NULL, expand = waiver())
 
基本上包括常用的設置內容,name,breaks,labels,limits等,
另外,特有的參數包括,date_labels,date_breaks,minor_breaks,date_minor_breks  從作用來說,date_breaks和breaks作用是一樣的,如果兩個參數同時出現在一個scale設置中,函數會默認優先使用date_breaks的參數內容。
minor_breaks()和date_minor_breaks()是在原有坐標軸刻度的基礎上,繪制出子刻度。比如你的breaks 可能是以月為單位,minor_breaks可以設置為以日為單位,這樣就可以在所畫的圖中看出更為精確的數據圖形。
 
 
具體實例library(ggplot2)  
df <- data.frame(
  date = Sys.Date() - 0:29,
  count = runif(30))
tu <- ggplot(df, aes(date, count)) +geom_line()
tu+scale_x_date(breaks=as.Date(c("2016-06-06","2016-06-13","2016-06-20","2016-06-27")),
                labels=c("06-06","06-13","06-20","06-27"))

 #常規方法畫圖,結果為

 
tu+scale_x_date(breaks=as.Date(c("2016-06-06","2016-06-13","2016-06-20","2016-06-27")),
                labels=c("06-06","06-13","06-20","06-27"),date_labels="%y/%m/%d")

tu+scale_x_date(date_labels="%y/%m/%d")

#上面兩個語句的畫圖結果都是同一個圖,可以相對明確的得到兩個信息

1、在lables和date_labels同時出現的情況下,系統會優先使用date_labels設置

2、在時間設置方面,date_labels,以及date_breaks  設置要比 labels和breaks設置要簡潔得多。

 

 另外一種方法是利用scales包與scale_x_datetime()結合進行設置,也可以是整體的日期設置達到簡潔效果,值得注意的是此時的日期應該為datetime類型,需要對數據進行轉換,轉換使用as.POSIXct()
 
df <- data.frame(
  date = as.POSIXct(Sys.Date() - 0:29),
  count = runif(30))

tu <- ggplot(df, aes(date, count)) +geom_line()

library(scales)

tu+scale_x_datetime(breaks=date_breaks("10 days"),labels=date_format("%m/%d"))

  

 
最后,強調一點,截斷內容除了days,以外還可以用“auto”, “secs”, “mins”, “hours”,  “weeks”等對數據進行分割顯示。
 
 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM