首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R- networkD3问题

R- networkD3问题
EN

Stack Overflow用户
提问于 2022-05-05 15:27:47
回答 1查看 86关注 0票数 0

我在R中使用networkD3来显示我的数据(sankeyNetwork函数)。我遇到了几个似乎没有解决办法的问题。

问题1:如果节点名称相似,则使用相同的颜色,即使总共不同,例如,如果名称是1,“一二三”,“一三”。这里的名称是通过NodeID指定的。如果1被重命名为类似“二一三”的东西,那么这个问题就不再存在了。有没有一种方法可以像这样显示名字,并按它们应该的方式分配颜色呢?

问题2:没有小数显示在链接或节点的值中。当想要用小数显示百分比时,这个问题很烦人。如果一个值低于1% (或者可能是.5%),它只显示0%,所有的值都会舍入到下一个整数。有办法显示小数(2或3)吗?解决这一问题的方法是通过将数字相乘并替换小数分隔符来使数字变大,但对于这一点,我还没有找到一个完整的解决方案。答案here提供了替换链接中十进制分隔符的解决方案。但是,节点仍然像以前一样显示,单元符号被移除。

问题3:向节点“组”或步骤添加标题。我的数据设计的方式是,有三个时间步骤具有相同的节点(3个步骤中的每个节点都有8个节点)。如何在提供有关该“组”节点的自定义信息的每个步骤之上添加一个标题。(我认为NodeGroup可能与我所指的不同,因此引用了这些话)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-10 15:57:48

{networkD3}在其JavaScript中有一个硬编码格式设置选项。你可以用你链接到的答案把它重置成你想要的.在.format(",.2f")位中关键地设置格式选项,在这种情况下,2意味着在小数点之后打印两位数字。

代码语言:javascript
复制
library(networkD3)
library(htmlwidgets)

nodes <- data.frame(name = c('a','b'))
links <- data.frame(source = 0, target = 1, value = 0.34)

p <- sankeyNetwork(
  Links = links,
  Source = "source",
  Target = "target",
  Value = "value",
  Nodes = nodes,
  NodeID = "name",
  fontSize = 12,
  nodeWidth = 30,
  iterations = 0
)

customJS <- '
function(el,x) { 
    var link = d3.selectAll(".link");

    var format = d3.formatLocale({"decimal": ",", "thousands": ".", "grouping": [3], "currency": ["", "\u00a0€"]}).format(",.2f");

    link.select("title").select("body")
        .html(function(d) { return "<pre>" + d.source.name + " \u2192 " + d.target.name +
            "\\n" + format(d.value) + "<pre>"; });
}
'
onRender(p, customJS)

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

https://stackoverflow.com/questions/72129768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档