【问题标题】:Multiple plots from multiple data frames using ggvis in shiny in R在 R 中使用闪亮的 ggvis 来自多个数据帧的多个图
【发布时间】:2015-04-22 13:58:21
【问题描述】:

如何绘制来自不同数据帧的多个系列,在一个 ggvis 图上具有不同的行数?

    shinyServer(function(input, output, session) {
    vis1 <- reactive({ 
      df2 <-data.frame(csv1)
      df3 <- data.frame(csv2)
      long2 <- array()
      matrix2<-data.frame(Col1,Col2,Col3,Col4)
      matrix2$long2 = as.character(paste0("Col3: ",Col3,", Col4: ",Col4))
      matrix2 # What does this line do?
    })
vis1 %>% 
  ggvis(x = ~Col1, y = ~Col2,fill = ~Col4, key:= ~long2) %>%
  layer_points() %>%
  add_axis("x", title = "Col1") %>% 
  scale_numeric("x", domain = c(0, 130), nice = FALSE, clamp = TRUE)%>%
  add_axis("y", title = "Col2") %>%  
  scale_numeric("y", domain = c(0, 8000), nice = FALSE, clamp = TRUE)%>% 
  add_tooltip(function(matrix2){
  paste0("Col2: ", matrix2$Col2, "<br>", "Col1: ", matrix2$Col1, "<br>", " ", as.character(matrix2$long2))
  }, "hover") %>%
   layer_paths(data = df2, x = ~Col1,y = ~Col2,fill:="green") %>%

  bind_shiny("plot_col2")#,"plot_ui_col2")

  output$matrix2_table <- renderTable({
  vis1()[,c("Col1","Col2","Col3","Col4")]
})

这是大多数 server.R 代码,其中 ui.R 代码可以很好地与这些轴上绘制的一个系列一起工作。 但是尝试将来自两个数据帧的数据放在这些轴上只会返回

“add_data(vis, data, data_name) 中的错误:找不到对象‘df2’”

甚至没有到达 df3。

如何让它识别 df2,然后使用该数据绘制第二个系列?

我知道从同一个数据框中绘制两个系列是这样完成的:

df %>% ggvis(~x,~y)  layer_points() %>%
df %>% layer_points(~x,~y1) 

差不多了,但是如何使用不同数量的点和不同的数据帧来完成呢? 谢谢。

【问题讨论】:

    标签: r shiny ggvis


    【解决方案1】:

    我将所有内容放在同一个数据框中,在同一列中,只是添加了更多行,还添加了一个颜色列,因此它们将以不同的颜色绘制。 首先要做的是在顶部的未命名函数部分中创建一个更大的数据框(只执行一次)。

    【讨论】:

    • 干得好!您可以发布您的代码以供将来参考吗?
    猜你喜欢
    • 2019-09-07
    • 2018-09-21
    • 2021-02-13
    • 1970-01-01
    • 2021-09-28
    • 2015-11-19
    • 2018-07-01
    • 2020-09-30
    • 1970-01-01
    相关资源
    最近更新 更多