簡體   English   中英

如何使用ggvis將多個圖形放在一個圖中

[英]How to put multiple graphs in one plot with ggvis

樣本數據:

y1 = c(1,2,3,4)
y2 = c(6,5,4,3)
x  = c(1,2,3,4)
df = data.frame(x,y1,y2)

我的問題:

我想使用ggvis將以下兩個圖組合成一個:

df %>% ggvis(~x,~y1) %>% layer_paths()
df %>% ggvis(~x,~y2) %>% layer_paths()

但是,以下不起作用:

df %>% ggvis(~x,~y1) %>% layer_paths() %>% ggvis(~x,~y2) %>% layer_paths()

您可以參考原始數據並添加圖層:

df %>% ggvis(~x,~y1) %>% layer_paths()%>%
  layer_paths(data = df, x = ~x, y = ~y2)

在此輸入圖像描述

您可以刪除對數據的引用,並將推斷:

df %>% ggvis(~x,~y1) %>% layer_paths()%>%
+     layer_paths(x = ~x, y = ~y2)

可以通過將每個組件合並在一起來合並兩個ggvis:

p1 <- df %>% ggvis(~x,~y1) %>% layer_paths()
p2 <- df %>% ggvis(~x,~y2) %>% layer_paths()

pp <- Map(c, p1, p2) %>% set_attributes(attributes(p1))

我不知道它是否適用於所有情況,但它至少適用於簡單的情節。

這是一個可以為您完成的功能:

merge_ggvis <- function(...) {
  vis_list <- list(...)
  out <- do.call(Map, c(list(`c`), vis_list))
  attributes(out) <- attributes(vis_list[[1]])
  out
}

您可以將它與包含圖的對象一起使用:

merge_ggvis(p1, p2)

或在管道中:

df %>%
  ggvis(~x, ~y1) %>% layer_paths() %>%
  merge_ggvis(
    df %>% ggvis(~x, ~y2) %>% layer_paths()
  )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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