[英]R: plot multiple curves vs one var but for 4 factors
我有一個DF看起來像:
id app vac dac
1: 1 1000802 579 455
2: 1 1000803 1284 918
3: 1 1000807 68 66
4: 1 1000809 1470 903
5: 2 1000802 407 188
6: 2 1000803 365 364
7: 2 1000807 938 116
8: 2 1000809 699 570
我需要在同一個畫布上為每個app
繪制vac
和dac
作為id
的函數。 我知道如何通過使用melt
和批量繪圖與ggplot
只為一個app
。 但我被困在如何做任意數量的因素/水平。
在這個例子中,4個app
將共有8條曲線。 有什么想法嗎? 這是測試的數據框。 謝謝!!
df = structure(list(id = c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L), app = c(1000802,
1000803, 1000807, 1000809, 1000802, 1000803, 1000807, 1000809
), vac = c(579, 1284, 68, 1470, 407, 365, 938, 699), dac = c(455,
918, 66, 903, 188, 364, 116, 570)), .Names = c("id", "app", "vac",
"dac"), class = c("data.table", "data.frame"), row.names = c(NA,
-8L))
編輯:對軸的一些說明, x
軸= id
, y
軸= 4個app
因子中每一個的vac
和dac
值
有點不清楚你在尋找什么,但如果你正在尋找一條連接vac
和dac
值的線,這里有一個使用dplyr
和tidyr
的解決方案。
首先, gather
vac
和dac
列(這類似於reshape2::melt
但是我發現更容易理解的語法)。 然后,將variable
(具有“vac”和“dac”)設置為x位置,將value
(來自舊的vac
和dac
列)設置為y,然后將app
和id
映射到美學(此處為color
和linetype
)。 設置group
以確保它連接正確的點對,並添加geom_line
:
df %>%
gather(variable, value, vac, dac) %>%
ggplot(aes(x = variable
, y = value
, color = factor(app)
, linetype = factor(id)
, group = paste(app, id))) +
geom_line()
給
給定問題編輯,您可以像這樣更改軸:
df %>%
gather(variable, value, vac, dac) %>%
ggplot(aes(x = id
, y = value
, color = factor(app)
, linetype = variable
, group = paste(app, variable))) +
geom_line()
給
我不確定,我理解你的問題,但我會做類似的事情
ggplot(df,aes(vac,app,group=app)) + geom_point(aes(color=factor(app)))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.