[英]How to append lines in a plot with ggplot2
我正在嘗試使用ggplot(或base R)以一種簡單的方式制作像這樣的plot
這個想法是將暗線視為一個組,在兩個子組(CAP 和 NC)之間有間隙,並且還放置第二個 x 實驗室來標記時間(如您所見,時間 0,15 和 240 是常見的兩組)。
謝謝你的幫助,
編輯:這里有一個例子。
db0 <- structure(list(t = c(0, 5, 15, 30, 60, 0, 15, 60, 0, 5, 15,
30,60, 0, 15, 60), g = c("C", "C", "C", "C", "C", "N", "N", "N",
"C", "C", "C", "C", "C", "N", "N", "N"), v = c("T1", "T1", "T1",
"T1", "T1", "T1", "T1", "T1", "T2", "T2", "T2", "T2", "T2", "T2",
"T2", "T2"), y = c(10, 12, 15, 25, 33, 10, 13, 11, 11, 20, 28,
14, 10, 11, 11, 12), x = c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 1L,
2L, 3L, 4L, 5L, 6L, 7L, 8L)), row.names = c(NA, -16L), class =
"data.frame")
db0$x <- rep(1:8, length.out=16)
library(ggplot2)
ggplot(db0, aes(x=as.factor(x), y=y, group=g, color=v)) +
geom_path() +
geom_point() +
scale_x_discrete(labels=c("1" = "0", "2" = "5", "3" = "15", "4" = "30",
"5" = "60", "6" = "0", "7" = "15", "8" = "60"))
這里的問題是如何以簡單的方式執行此 plot,無需創建 x 變量和更改 x-lab 名稱,而是使用 ggplot2 命令。 此外,geom_path 存在問題,它將一組的結尾與以下組的開頭聯系起來。
group = interaction(g, v)
來防止線路連接。facet_grid
獲得類似的結果。 順便說一句,我在這里使用x=t
來獲取 x 軸的實際值,而不是嘗試用序數等 map 它。
ggplot(db0, aes(x=t, y=y, group=interaction(g, v), color=v)) +
geom_path() +
geom_point() +
facet_grid(. ~ g, space = "free_x")
我在此處添加了space="free_x"
以嘗試使右側的 x 軸進行壓縮,這時我注意到左側和右側的 x 范圍相同...理論上,如果它們不同,每個窗格的大小可能是成比例的。 (見https://stackoverflow.com/a/10455381/3358272 )
您需要進行一些格式化/標記才能獲得所需的“CAP”和“NC”標簽。
如果您需要相似的 x 范圍但不同的寬度,那么您可能需要調整其中一個組的 x 軸,然后以某種方式附加一個貼標機來區分兩組。
第三種選擇是生成兩個單獨的圖(使用不同的 x 軸控件)並使用 package 之類的patchwork
而成,將它們與不同的寬度組合在一起。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.