[英]Interaction between html widgets in R shiny
我正在開發一個 R 閃亮應用程序,它使用幾個 html 小部件,特別是networkD3 、 d3heatmap和chorddiag 。
這些小部件單獨工作正常。 但是,在同一頁面中使用它們會在它們應該出現的地方留下空白。
這是顯示錯誤的可重現代碼。 在 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 版本不兼容,而chorddiag
和d3heatmap
似乎使用了這種版本。 htmlwidgets
是驅動上述包的底層包,它只使用最新版本的依賴項,因此使用同一庫的沖突版本的 htmlwidgets 不能同時工作。 在這里查看有關此問題的討論起點。
您有幾個可能的選擇,盡管它們都不是很好...
將networkD3
恢復為 < 0.3 的版本,以便它也使用 D3v3
為chorddiag
開發人員和d3heatmap
開發人員升級到 D3v4 的游說
游說htmlwidgets
開發人員提出一種強大的方法來處理沖突的 JavaScript 依賴項
@CJYetman 提供了 3 個處理此問題的選項。 這里還有一個,雖然它仍然沒有吸引力,但它的工作量可能會減少:將chorddiag
和d3heatmap
使用的庫從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.