我正在使用 .tsv 数据集构建一个非常简单的多线图来测量一段时间内的值。我想合并第二个 .tsv 来改变每行的笔画宽度。这两个数据集具有相同的 x 值(时间),但一个将绘制每条线的 y 值,另一个数据集将在 x 和 y 值上绘制线的笔画宽度(我们称之为“z”)。
换句话说: Dataset1 = x,y Dataset2 = x,z
我使用Bostock 的多系列折线图作为我的基本参考。
我有一个想法:我应该将两个 .tsv 合并为一个 .json 吗?
我正在使用 .tsv 数据集构建一个非常简单的多线图来测量一段时间内的值。我想合并第二个 .tsv 来改变每行的笔画宽度。这两个数据集具有相同的 x 值(时间),但一个将绘制每条线的 y 值,另一个数据集将在 x 和 y 值上绘制线的笔画宽度(我们称之为“z”)。
换句话说: Dataset1 = x,y Dataset2 = x,z
我使用Bostock 的多系列折线图作为我的基本参考。
我有一个想法:我应该将两个 .tsv 合并为一个 .json 吗?
无论您是要组合成 JSON 文件还是单个 TSV,我都强烈建议您加入这两个文件。除了使数据访问不那么混乱之外,您还只需要一个加载调用而不是两个嵌套调用。所以而不是像
d3.tsv("1.tsv", function(error1, data1) {
d3.tsv("2.tsv", function(error2, data2) {
// ...
something.selectAll("path")
.data(data1).enter()
.append("path")
.style("stroke-width", function(d, i) { return data2[i].z; })
.attr("d", function(d) { return d.y; });
});
});
你可以做类似的事情
d3.tsv("1.tsv", function(error, data) {
// ...
something.selectAll("path")
.data(data1).enter()
.append("path")
.style("stroke-width", function(d) { return d.z; })
.attr("d", function(d) { return d.y; });
});
请注意,您将无法在 SVG 中改变线条的笔画宽度。也就是说,每个path
都有一个您无法动态更改的宽度。要实现这一点,您需要将线分成单独的段或创建填充路径来模拟不同宽度的线。