我有這個資料框,我想根據 ID 為每個 ID 使用四個相關資料點制作一個重疊的時間序列圖。我不知道如何讓所有這些節目相互疊加。我希望將線條分成兩種顏色,綠色表示結束時的值低于開始時的值,紅色表示相反的值。
我不知道我是否需要先更改我的資料框,或者我是否可以使用 ggplot 完成所有作業..
這是我的資料示例(總共有 38 行) ID 之后的所有列都應該是 x 軸上的點,Y 應該顯示從 0 到 3
ID Starting_BAI HYP1_PostSession_1 HYP1_PostSession_4 HYP1_PostSession_8
1 1 2 1 1 0
2 2 3 3 2 1
3 3 2 2 0 0
4 4 3 3 2 0
5 5 3 2 2 1
6 6 2 2 1 1
7 7 2 2 1 0
8 8 3 3 2 1
9 9 3 3 2 0
10 10 3 3 1 0
uj5u.com熱心網友回復:
我可能會將您的基線值重命名為HYP1_Session_0或類似的名稱,以便末尾的最終數字表示“時間”并且與其他列名稱一致。
將您的資料變成長格式而不是寬格式(和整潔)會有所幫助。這意味著對特定 ID 的每次觀察都是一行。
使用pivot_longer,您的資料可以長格式如下:
library(tidyverse)
library(ggplot2)
df %>%
rename(HYP1_Session_0 = Starting_BAI) %>%
pivot_longer(cols = -ID, names_to = "time", values_to = "value", names_pattern = "(\\d )$", names_transform = list(time = as.numeric))
# A tibble: 40 × 3
ID time value
<int> <dbl> <int>
1 1 0 2
2 1 1 1
3 1 4 1
4 1 8 0
5 2 0 3
6 2 1 3
7 2 4 2
8 2 8 1
9 3 0 2
10 3 1 2
# … with 30 more rows
在此之后,使用tidyverse您可以group_by您ID添加的指標列change,將在時間0和8比較值(著色)。
最后,您可以使用ggplot來繪制您的意大利面圖。在這里,我們可以根據 指示顏色change。此外,position_jitter防止線條彼此完全重疊。
注意:我更改了資料,以便其中一個ID(ID #6)會產生不同的顏色(紅色)——僅用于測驗。
library(tidyverse)
library(ggplot2)
df %>%
rename(HYP1_Session_0 = Starting_BAI) %>%
pivot_longer(cols = -ID, names_to = "time", values_to = "value", names_pattern = "(\\d )$", names_transform = list(time = as.numeric)) %>%
group_by(ID) %>%
mutate(change = value[time == 8] < value[time == 0]) %>%
ggplot(aes(x = time, y = value, group = ID, color = change))
geom_line(position=position_jitter(width = 0, height = .1))
scale_x_continuous(breaks = c(0, 1, 4, 8))
scale_color_manual(values = c("red", "green"))
輸出

資料
df <- structure(list(ID = 1:10, Starting_BAI = c(2L, 3L, 2L, 3L, 3L,
2L, 2L, 3L, 3L, 3L), HYP1_PostSession_1 = c(1L, 3L, 2L, 3L, 2L,
2L, 2L, 3L, 3L, 3L), HYP1_PostSession_4 = c(1L, 2L, 0L, 2L, 2L,
1L, 1L, 2L, 2L, 1L), HYP1_PostSession_8 = c(0L, 1L, 0L, 0L, 1L,
3L, 0L, 1L, 0L, 0L)), class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "6", "7", "8", "9", "10"))
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/403327.html
標籤:
上一篇:通過給定點的回歸線
下一篇:在每個方面將軸日期擴展到整月
