【发布时间】:2026-02-14 22:00:01
【问题描述】:
我有两个单独的 CSV 文件,共享一个属性:
文件 1
name,total
Frank,13
Mary,24
Jim,46
文件 2
name,desc
Frank,yellow
Mary,blue
Jim,green
我如何映射属性 desc 到文件 1,比如说,当我将鼠标悬停在 Frank 上时,我会看到“13”和“黄色”?
目前,我的代码如下所示:
d3.csv("data/csv/bilancio-missioni-desc.csv", function(descrizione) {
data = descrizione.map(function(data){
div.html("<h3>" + d.name + "</h3>" + "<p>" + data.desc + "</p>")
})
问题在于 d.name 和 data.desc(来自文件 1 和文件 2)不匹配 - 我可以理解这是因为我没有将它们组合起来,因此它们可以共享通用属性name,但是不知道怎么写正确的代码。
更新 到目前为止我的代码:
d3.csv("data/csv/bilancio-tipologiedispesa-nest.csv", function(data1) {
d3.csv("data/csv/bilancio-missioni-desc.csv", function(data2) {
//code that depends on both data1 and data2
data1.forEach(d => {
data2.forEach(e => {
if (d.name === e.name) {
d.desc = e.desc;
}
});
});
// Fade all the segments.
d3.selectAll("path")
.style("opacity", .3);
vis.selectAll("path")
.filter(function(node) {
return (sequenceArray.indexOf(node) >= 0);
})
.style("opacity", 1);
div.transition()
.duration(200)
.style("opacity", .9);
div.html("<h3>" + d.name + "</h3>" + "<p>" + d.desc + "</p>");
});
});
}
如果我 console.log(data1),“desc”(来自 data2)被附加到 data1(耶!)。但是“d.desc”在 HTML 中返回“unidefined”。
【问题讨论】:
-
你能提供一些你拥有的代码吗?
-
你好@snolflake,我编辑了我的问题。谢谢。
-
@ValentinaRachiele 关于您的更新:
d3.csv是异步的。因此,任何依赖于data1的代码都必须inside 内部d3.csv。也就是说,将所有代码移至forEach下方。
标签: javascript d3.js