首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >D3 Sankey图:更改节点位置

D3 Sankey图:更改节点位置
EN

Stack Overflow用户
提问于 2021-02-16 08:17:21
回答 1查看 199关注 0票数 3

我正在使用networkD3库在Shiny中创建一个Sankey图。我需要改变一个节点的位置(旋转90d,然后下移)。为此,我使用js,如下面的小示例所示。但是,在更改节点之后,我需要更新链接,而我不知道该如何做。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(shiny)
library(networkD3)
library(htmlwidgets)
library(tibble)
library(dplyr)
library(ggplot2)
library(ggforce)


ui <- fluidPage(
  fluidRow(sankeyNetworkOutput("plot"))
)

server <- function(input, output, session) {
  session$onSessionEnded(stopApp)

  URL <- paste0(
    "https://cdn.rawgit.com/christophergandrud/networkD3/",
    "master/JSONdata/energy.json"
  )
  energy <- jsonlite::fromJSON(URL)
  
  output$plot <- renderSankeyNetwork({
    sn <- sankeyNetwork(
      Links = energy$links, Nodes = energy$nodes, Source = "source",
      Target = "target", Value = "value", NodeID = "name",
      units = "TWh", fontSize = 12, nodeWidth = 30, nodePadding = 0,
      width = "100%", sinksRight = FALSE
    )

    update_diagr <-
      'function(el, x) {
          d3.select(el)
          .selectAll(".node rect")
          .filter(function(d) { return d.name.startsWith("National"); })
          .attr("transform", "translate(0 100) rotate(90)");
          
        }'
    onRender(sn, update_diagr)
  })
}

shinyApp(ui, server)

EN

回答 1

Stack Overflow用户

发布于 2021-03-13 05:57:50

您可以尝试Plotly作为替代方案。您可以尝试指定每个节点的X、Y坐标来定位它们。这样链接就不会消失了。文档:https://plotly.com/r/sankey-diagram/#define-node-position

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66220773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文