[英]R: time series plot years and observations in order as they come in dataset
我有一個數據集:
TimeSeries <- data.frame(date=c("2013","2013","2013","2014","2014","2015","2015","2016", "2016","2017","2017"),
score=c(-0.333, 0.500, 0.000, 0.333, -0.500, 0.777, -0.450, 0.667, -0.011, 0.111, -0.145))
現在我只想將 plot 作為一個時間序列,顯示每年的所有觀察結果。 我只是代碼:
ggplot(TimeSeries, aes(x = date, y = score)) +
geom_line() + scale_x_discrete(breaks = c(2013,2014,2015,2016))
這給了我以下內容:
但與其相反,我希望“2013”的觀察結果在 xas 上的“2013”和“2014”之間按順序出現在數據集中。 因此,這將是一條從 -0.333 到 0.500 再到 0.000 的線。 所有其他年份和觀察結果都相同。 它們需要按照它們在數據集中出現的順序相互連接。 所以首先是 2013 年,然后是第二個,等等。有人可以幫忙嗎?
您會發現lubridate
package 中的函數很有用。
基本上我們所做的是創建一個基於年份加上變量順序的人工日期。 訂單被轉換為十進制,然后添加到年份,並轉換為實際日期以進行繪圖。
TimeSeries %>%
mutate(date = as.numeric(date)) %>%
group_by(date) %>%
mutate(date_order = row_number()) %>%
mutate(n_in_year = n()) %>%
mutate(decimal = date_order / n_in_year) %>%
mutate(full_date_decimal = date + decimal) %>%
mutate(plot_date = date_decimal(full_date_decimal)) %>%
mutate(plot_date = as_date(plot_date)) %>%
ggplot(aes(x = plot_date, y = score)) +
geom_line() +
scale_x_date()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.