我有一个相对简单的 sankey 图,使用networkD3
闪亮应用程序中的包生成。我面临的问题是,根据我的输入数据,输出图的尺寸(高度和宽度)差异很大。请查看下面的 gif 以查看行为。
MWE代码:
library("shiny")
library("networkD3")
ui <- fluidPage(
column(3,
sliderInput("f1", "Factor:",
min = 1, max = 100, value = 1, step = 1,
animate = animationOptions(interval = 1, loop = FALSE))
),
column(6, sankeyNetworkOutput("mySankeyD", width = "100%", height = "100%")),
column(3, "")
)
server <- function(input, output) {
output$mySankeyD <- renderSankeyNetwork({
myDf <- list(nodes = data.frame(name=c( "A", "B", "C", "D",
"W", "X", "Y", "Z")),
links = data.frame(source=as.integer(c(0, 0, 0, 0, 1, 2, 3)),
target=as.integer(c(4, 5, 5, 5, 7, 6, 5)),
value =c(1*input$f1, 1, 1, 5, 1, 5, 3)
)
)
sankeyNetwork(Links = myDf$links, Nodes = myDf$nodes, Source = "source",
Target = "target", Value = "value", NodeID = "name",
units = "TWh", fontSize = 25, nodeWidth = 30, fontFamily = "sans-serif", iterations = 0,
nodePadding = 10, height = 500, width = 500, sinksRight =TRUE,
margin = NULL)
})
}
shinyApp(ui, server)
我尝试操纵输入变量height
和width
内部sankeyNetworkOutput()
函数和变量nodePadding
、、、height
和width
内部。似乎没有一个对地块大小有一致的影响。sinksRight
margin
sankeyNetwork()
我也尝试像这样标准化links dataframe
inside的值myDf
:
value = c(1*input$w1, 4, 1, 5, 1, 5, 3)/(1*input$w1)
或者value = c(1*input$w1, 4, 1, 5, 1, 5, 3)/sum(c(1*input$w1, 4, 1, 5, 1, 5, 3))
但标准化根本没有任何区别。我认为这是对value
情节维度产生影响的价值观的关系。但为什么?
我想念什么?为什么 的值会value
影响绘图尺寸?
有人有解决方案或解决方法吗?