【问题标题】:Can I rotate the node labels in a Sankey Plot (networkD3::sankeyNetwork)?我可以在 Sankey Plot (networkD3::sankeyNetwork) 中旋转节点标签吗?
【发布时间】:2021-01-20 22:30:33
【问题描述】:

我的 Sankey 图有长(ish)节点标签,我想旋转这些标签,以便从上到下而不是从左到右读取它们。理想情况下,我可以将这些旋转的节点标签直接放在节点上(而不是边缘)。基本 R 图中是否有类似 'srt' 选项的东西?

【问题讨论】:

    标签: r d3.js sankey-diagram htmlwidgets networkd3


    【解决方案1】:

    您可以将 JavaScript 添加到 HTMLWidget 以更改某些文本属性/样式...

    library(networkD3)
    library(htmlwidgets)
    
    links <- data.frame(
      src = c(0, 0, 0, 1, 1, 1, 2, 2, 2),
      target = c(3, 4, 5, 3, 4, 5, 3, 4, 5),
      value = 1
    )
    
    nodes <- data.frame(name = paste0("node", 1:6))
    
    sn <- sankeyNetwork(
      Links = links,
      Nodes = nodes,
      Source = 'src',
      Target = 'target',
      Value = 'value',
      NodeID = 'name',
      fontSize = 16,
      width = 600,
      height = 300,
      margin = list("left" = 100)
    )
    
    sn <- onRender(
      sn,
      '
      function(el,x) {
        d3.select(el)
          .selectAll(".node text")
          .attr("text-anchor", "middle")
          .style("writing-mode", "vertical-rl")
          .style("text-orientation", "upright");
      }
      '
    )
    
    sn
    
    

    【讨论】:

    • 绝妙的建议,感谢您的演示!我正在尝试旋转整个标签,我几乎通过 (` .style("writing-mode", "vertical-lr") .style("text-orientation", "sideways")` 得到它,但是我不知道如何让它从下到上阅读(字母的“底部”朝右)。再次感谢 CJ!
    • 你必须弄乱变换和旋转样式/属性,不幸的是这比听起来更困难,因为你必须知道/设置变换的原点在哪里......但是否则它会起作用......你可以通过这种方式应用任何 CSS 或 SVG 样式或属性
    猜你喜欢
    • 2022-10-17
    • 2017-11-25
    • 1970-01-01
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多