如何向 link 和节点标签添加美元符号?
How can I add a dollar sign to link and node labels?
我想在 networkD3 Sankey 图中的 link 和节点标签上添加一个美元符号。在这里提出并回答了类似的问题:
Link value label thousands separator
在上面的link中,CJ用htmlwidgets::onRender
重写了link个标题,将千位分隔符从“,”改为“.”。
很遗憾,我不明白 JavaScript,也不知道如何更改解决方案来解决我的问题。
编辑
尝试将 CJ Yetman 的技术应用于节点。我的代码无效。
customJS <- '
function(el,x) {
var node = d3.selectAll(".node");
var format = d3.format("($,.2f");
node.select("title").select("body")
.html(function(d) { return "<pre>" + d.target.name + "<br>" + format(d.value) + "<pre>"; });
}
'
欢迎提出建议和指正。
对于节点,您可以在将数据框传递给 sankeyNetwork()
之前将“$”添加到数据框中的字符串,例如...
nodes <- data.frame(name = c("$a", "$b"))
对于链接,您可以在此处的 JavaScript 命令中将格式字符串 (format specification documented here) 调整为您需要的任何内容...
var format = d3.format("$");
总的来说,看起来像这样...
library(networkD3)
library(htmlwidgets)
nodes <- data.frame(name = c("$a", "$b"))
links <- data.frame(source = c(0), target = c(1), value = c(12000))
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.format("$");
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)
我使用 CJ Yetman 的代码更改了 var format
以获得以下格式。
原始 -> CJ Yetman -> 我的编辑
12000 -> 12000 美元 -> 12,000.00 美元
customJS <- '
function(el,x) {
var link = d3.selectAll(".link");
var format = d3.format("($,.2f");
link.select("title").select("body")
.html(function(d) { return "<pre>" + d.source.name + " \u2192 " + d.target.name +
"\n" + format(d.value) + "<pre>"; });
}
'
我还使用了 CJ Yetman 的回答 here 来使用 onRender
在 shiny 中应用 customJS
。
我想在 networkD3 Sankey 图中的 link 和节点标签上添加一个美元符号。在这里提出并回答了类似的问题:
Link value label thousands separator
在上面的link中,CJ用htmlwidgets::onRender
重写了link个标题,将千位分隔符从“,”改为“.”。
很遗憾,我不明白 JavaScript,也不知道如何更改解决方案来解决我的问题。
编辑
尝试将 CJ Yetman 的技术应用于节点。我的代码无效。
customJS <- '
function(el,x) {
var node = d3.selectAll(".node");
var format = d3.format("($,.2f");
node.select("title").select("body")
.html(function(d) { return "<pre>" + d.target.name + "<br>" + format(d.value) + "<pre>"; });
}
'
欢迎提出建议和指正。
对于节点,您可以在将数据框传递给 sankeyNetwork()
之前将“$”添加到数据框中的字符串,例如...
nodes <- data.frame(name = c("$a", "$b"))
对于链接,您可以在此处的 JavaScript 命令中将格式字符串 (format specification documented here) 调整为您需要的任何内容...
var format = d3.format("$");
总的来说,看起来像这样...
library(networkD3)
library(htmlwidgets)
nodes <- data.frame(name = c("$a", "$b"))
links <- data.frame(source = c(0), target = c(1), value = c(12000))
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.format("$");
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)
我使用 CJ Yetman 的代码更改了 var format
以获得以下格式。
原始 -> CJ Yetman -> 我的编辑
12000 -> 12000 美元 -> 12,000.00 美元
customJS <- '
function(el,x) {
var link = d3.selectAll(".link");
var format = d3.format("($,.2f");
link.select("title").select("body")
.html(function(d) { return "<pre>" + d.source.name + " \u2192 " + d.target.name +
"\n" + format(d.value) + "<pre>"; });
}
'
我还使用了 CJ Yetman 的回答 here 来使用 onRender
在 shiny 中应用 customJS
。