微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Shiny R 中显示维恩图

如何解决在 Shiny R 中显示维恩图

我想在 Shiny R 中以交互方式显示 vennDiagram::venn.diagram()

但是,函数 venn.diagram() 需要一个 filename 属性,因为它生成外部 TIFF 文档。

因此,我应该使用什么函数根据用户输入 (input$SELECTION) 动态生成维恩图?

我想我应该使用函数draw.single.venndraw.triple.venndraw.pairwise.venndraw.quad.venn,但我不知道高级有多少我需要的维恩斯。

library(shiny)
library(venn.Diagram)

# Define UI ----
ui <- fluidPage(
  titlePanel("Title"),sidebarLayout(
    sidebarPanel(
      
      checkBoxGroupInput(
        "SELECTION",label = "Select your subsets",choices = list("Web of Science" = "WoS","Scopus" = "Scopus","Dimensions" = "Dimensions","LENS" = "LENS"),selected = c("WoS","Scopus")
      ),mainPanel(
      plotOutput("venn")
    )
  )
)

# Define server logic ----
server <- function(input,output) {
  
  output$venn <- renderPlot({

    data <- list(WoS=c("ff","gg"),Scopus=c("ff",Dimensions=c("ff",LENS=c("ff","gg"))
    
    # select only those elements that are named in input$SELECTION
    data <- data[input$SELECTION]
    
    # this will not work
    venn.diagram(data)
  })
  
}

# Run the app ----
shinyApp(ui = ui,server = server)

解决方法

Limey 在评论中发布了正确答案,来自 this source

首先,我添加了这个功能:

display_venn <- function(x,...){
  library(VennDiagram)
  grid.newpage()
  venn_object <- venn.diagram(x,filename = NULL,...)
  grid.draw(venn_object)
}

其次,我将 venn.diagram(data) 替换为 display_venn(data)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?