我已經連續收集了一些降雨數據,從中我已經計算了每日總計。下面是一些玩具數據:使用geom_step繪製每日降雨數據
Date <- c(seq(as.Date("2016-07-01"), by = "1 day", length.out = 10))
rain_mm <- c(3,6,8,12,0,0,34,23,5,1)
rain_data <- data.frame(Date, rain_mm)
如下我可以畫出這樣的數據:
ggplot(rain_data, aes(Date, rain_mm)) +
geom_bar(stat = "identity") +
scale_x_date(date_labels = "%d")
其中給出以下幾點:
這似乎罰款。很明顯,某一天有多少降雨。然而,也可以解釋爲,在一天的中午和下一天的中午之間,有一定的降雨量下降,這是錯誤的。如果該圖與同一時期的其他相關連續變量圖組合在一起,則這尤其是個問題。
爲了避開這個問題,我可以用geom_step
如下:
library(ggplot)
ggplot(rain_data, aes(Date, rain_mm)) +
geom_step() +
scale_x_date(date_labels = "%d")
其中給出:
這是顯示的數據有更好的方式,現在scale_x_date出現是一個連續的軸。但是,如果將這個區域填充到所填入的步驟以下,這將是一件好事,但似乎找不到這樣做的簡單方法。
問題1:如何填充geom_step?可能嗎?
它也可以是到Date
轉換成POSIXct
便於相同x軸在多情節的數字如在本討論SO question here有用。 我能做到這一點,如下所示:
library(dplyr)
rain_data_POSIX <- rain_data %>% mutate(Date = as.POSIXct(Date))
Date rain_mm
1 2016-07-01 01:00:00 3
2 2016-07-02 01:00:00 6
3 2016-07-03 01:00:00 8
4 2016-07-04 01:00:00 12
5 2016-07-05 01:00:00 0
6 2016-07-06 01:00:00 0
7 2016-07-07 01:00:00 34
8 2016-07-08 01:00:00 23
9 2016-07-09 01:00:00 5
10 2016-07-10 01:00:00 1
然而,這給每個日期的01:00時。我寧願有00:00。我可以在as.POSIXct
函數調用中更改它嗎,還是必須使用單獨的函數之後才能做到這一點?我認爲這與tz = ""
有關,但無法弄清楚。
如何將類Date
轉換爲POSIXct
,以便生成的時間爲00:00?
感謝
第一個問題是一個潛在的重複:http://stackoverflow.com/questions/21887088/generate-a-filled-geom-step –
seconde問題:嘗試'tz =「GMT」'或乾脆刪除1小時:'as.POSIXct(Date) - 3600' .. – timat
@ArtemSokolov我已經看到了,但無法真正找出答案。也想看看最近有沒有變化。謝謝 –