簡體   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