簡體   English   中英

如何使用 ggplot2 在 plot 中的 append 行

[英]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 存在問題,它將一組的結尾與以下組的開頭聯系起來。

  1. 使用group = interaction(g, v)來防止線路連接。
  2. 我認為您可以使用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")

多面 ggplot2 與線斷開

我在此處添加了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.

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