[英]Plot time series with years in different columns
我有以下數據框dt(head,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.