【问题标题】:Rstudio - Network D3 Sankey Node Value too Precise Using HtmlwidgetsRstudio - 使用 Htmlwidgets 的网络 D3 Sankey 节点值太精确
【发布时间】:2022-11-02 03:49:33
【问题描述】:
我使用 javascript 将节点标签及其名称和值添加到 RStudio 中的网络 D3 Sankey 中,如下所示:
javascript_string <-
'function(el, x){
d3.select(el).selectAll(".node text")
.text(d => d.name + " (" + d.value + ")");
}'
生成的 Sankey 将其中一些值显示到小数点后 10 位,这太精确了。我只想让它显示最多 2 位小数的值。我要在这个 javascript 字符串中更改什么以将 d.value 限制为小数点后 2 位?
谢谢!
我尝试使用 javascript 字符串将带有名称和值的节点标签添加到 RStudio 中的网络 D3 sankey。它确实添加了我想要的标签,但结果图像中的一些值太精确了。我只想将其限制为小数点后 2 位。
【问题讨论】:
标签:
javascript
rstudio
sankey-diagram
networkd3
【解决方案1】:
您可以使用 D3 格式功能将多种不同的格式应用于数字。见https://github.com/d3/d3-format
例如,在这里我四舍五入到零小数点...
library(networkD3)
links <-
read.table(header = TRUE, stringsAsFactors = FALSE, text = "
source target value
0 1 1.4
1 2 2.9
")
nodes <-
read.table(header = TRUE, stringsAsFactors = FALSE, text = "
name
A
B
C
")
sn <- sankeyNetwork(
Links = links,
Nodes = nodes,
Source = 'source',
Target = 'target',
Value = 'value',
NodeID = 'name'
)
javascript_string <-
'function(el, x){
d3.select(el).selectAll(".node text")
.text(d => d.name + " (" + d3.format("(.0f")(d.value) + ")");
}'
htmlwidgets::onRender(
x = sn,
jsCode = javascript_string
)