簡體   English   中英

在不同的列中繪制年份的時間序列

[英]Plot time series with years in different columns

我有以下數據框dt(head,6)

DT(頭,6)

我需要創建一個圖表,其中 x 軸上有年份(2015、2016、2017、2018、2019),不同的列(W15、W16、W17、W18、W19 - 每個都與一年有關) y 軸。 它們都應該按列 TEAM 分組。

我嘗試使用ggplot2無濟於事。

您需要將數據從寬轉換為長,然后使用ggplot 往下看;

library(tidyverse)

dt %>% 
  pivot_longer(., -Team, values_to = "W", names_to = "Year") %>% 
  mutate(Year = as.integer(gsub("W", "20", Year))) %>% 
  ggplot(., aes(x=Year, y=W, group=Team)) +
  geom_line(aes(color=Team))

數據:

dt <- structure(list(Team = c("AC", "AF", "AK", "AL", "AA&M", "Alst", "Alb"), 
                     W15 = c(7L, 12L, 20L, 18L, 8L, 17L, 24L), 
                     W16 = c(9L, 12L, 25L, 18L, 10L, 12L, 23L), 
                     W17 = c(13L, 12L, 27L, 19L, 2L, 8L, 21L), 
                     W18 = c(16L, 12L, 14L, 20L, 3L, 8L, 22L), 
                     W19 = c(27L, 14L, 17L, 18L, 5L, 12L, 12L)), 
                class = "data.frame", row.names = c(NA, -7L))
#   Team W15 W16 W17 W18 W19
# 1   AC   7   9  13  16  27
# 2   AF  12  12  12  12  14
# 3   AK  20  25  27  14  17
# 4   AL  18  18  19  20  18
# 5 AA&M   8  10   2   3   5
# 6 Alst  17  12   8   8  12
# 7  Alb  24  23  21  22  12

t(dt[-1])和來自名稱數字部分的時間創建一個動物園對象z 使用 dt$TEAM 作為它的列名。 最后使用autoplot.zoo使用autoplot.zoo繪制它。 如果您更喜歡每個系列的單獨面板,請刪除facet=NULL

library(ggplot2)
library(zoo)

z <- zoo(t(dt[-1]), as.numeric(sub("W", "", names(dt)[-1])))
names(z) <- dt$TEAM

autoplot(z, facet = NULL) + scale_x_continuous(breaks = time(z))

筆記

假設這個輸入數據:

set.seed(123)
dt <- data.frame(TEAM = letters[1:5], W15 = rnorm(5), W16 = rnorm(5), W17 = rnorm(5))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM