繁体   English   中英

R Shiny 中 html 小部件之间的交互

[英]Interaction between html widgets in R shiny

我正在开发一个 R 闪亮应用程序,它使用几个 html 小部件,特别是networkD3d3heatmapchorddiag

这些小部件单独工作正常。 但是,在同一页面中使用它们会在它们应该出现的地方留下空白

这是显示错误的可重现代码。 在 UI 中注释绘图行,您将看到绘图出现和消失..

我非常感谢你的帮助!

# libraries
library(shiny)
library(d3heatmap)
library(chorddiag)
library(networkD3)

# Server
server <- function(input, output) {

  # create heatmap
  output$heatmap <- renderD3heatmap({
    d3heatmap(mtcars, scale = "column", colors = "Spectral")
  })

  # create chord diagram
  output$chord <- renderChorddiag({
    m <- matrix(c(11975,  5871, 8916, 2868,1951, 10048, 2060, 6171, 8010, 16145, 8090, 8045,1013,   990,  940, 6907),
    byrow = TRUE, nrow = 4, ncol = 4)
    haircolors <- c("black", "blonde", "brown", "red")
    dimnames(m) <- list(have = haircolors, prefer = haircolors)
    groupColors <- c("#000000", "#FFDD89", "#957244", "#F26223")
    chorddiag(m, groupColors = groupColors, groupnamePadding = 20)
  })

  # create sankey
  output$sankey <- renderSankeyNetwork({
    nodes=data.frame(ID=c("A","B","C","D","E"))
    links=data.frame(source=c(1,2,3), target=c(3,4,4), value=c(12,15,29))
    sankeyNetwork(Links = links, Nodes = nodes, Source = "source", Target = "target", Value = "value", NodeID = "ID")
  })

}



# Ui
ui <- fluidPage(
  sidebarLayout(
    sidebarPanel("shiny shines"),
    mainPanel(
        # Comment these lines and you will see charts appear / disappear.
        d3heatmapOutput("heatmap"),
        chorddiagOutput("chord"),
        sankeyNetworkOutput("sankey")
    )
  )
)

shinyApp(ui = ui, server = server)

networkD3在 2017 年 2 月的0.3 版中更新为 D3v4,这与 D3 的 v3 版本不兼容,而chorddiagd3heatmap似乎使用了这种版本。 htmlwidgets是驱动上述包的底层包,它只使用最新版本的依赖项,因此使用同一库的冲突版本的 htmlwidgets 不能同时工作。 在这里查看有关此问题的讨论起点。

您有几个可能的选择,尽管它们都不是很好...

  1. networkD3恢复为 < 0.3 的版本,以便它也使用 D3v3

  2. chorddiag开发人员d3heatmap开发人员升级到 D3v4 的游说

  3. 游说htmlwidgets开发人员提出一种强大的方法来处理冲突的 JavaScript 依赖项

@CJYetman 提供了 3 个处理此问题的选项。 这里还有一个,虽然它仍然没有吸引力,但它的工作量可能会减少:将chorddiagd3heatmap使用的库从d3重命名为其他内容,以便 D3 的第 3 版(由这两个使用)和第 4 版(由networkD3 )可以共存于同一页面。

chorddiag执行此操作的chorddiag在这里: https : //github.com/dmurdoch/chorddiag 它将库重命名为d3_3 同样的变化似乎也适用于d3heatmap https://github.com/dmurdoch/d3heatmap

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM