d3v4 散点图 - 修复域添加动画
d3v4 scatterplot - fixing the domain adding animations
我正在尝试升级旧的散点图 -- 但映射域已成为一个问题,它无法正确呈现点的位置。
//版本4尝试
https://jsfiddle.net/z16u8j4c/1/
//旧版本3
https://jsfiddle.net/oj2sg38z/2/
我尝试重构数据集,以便它可以包含标签信息 - 以便将来可能生成图例。
var x = d3.scale.linear()
.domain([0, d3.max(data, function(d) { return d[0]; })])
.range([ 0, width ]);
var y = d3.scale.linear()
.domain([0, d3.max(data, function(d) { return d[1]; })])
.range([ height, 0 ]);
我尝试使用 d3v4 标准在我的版本中修复它
var x = d3.scaleLinear()
.domain([0, d3.max(data, function(d) { return d.value[0]; })])
.range([ 0, width ]);
var y = d3.scaleLinear()
.domain([0, d3.max(data, function(d) { return d.value[1]; })])
.range([ height, 0 ]);
问题出在您的 d3.max
上。您的数据是具有不同系列值的对象数组。如果你想找到所有值的最大值,你必须遍历所有 data.values,所以一种方法是获取所有值并将其平放在数组上,然后找到它的最大值。
var x = d3
.scaleLinear()
.domain([0, d3.max(data.map(s => s.value).flat(), d => d[0])])
.range([0, width])
var y = d3
.scaleLinear()
.domain([0, d3.max(data.map(s => s.value).flat(), d => d[1])])
.range([0, height])
我正在尝试升级旧的散点图 -- 但映射域已成为一个问题,它无法正确呈现点的位置。
//版本4尝试 https://jsfiddle.net/z16u8j4c/1/
//旧版本3 https://jsfiddle.net/oj2sg38z/2/
我尝试重构数据集,以便它可以包含标签信息 - 以便将来可能生成图例。
var x = d3.scale.linear()
.domain([0, d3.max(data, function(d) { return d[0]; })])
.range([ 0, width ]);
var y = d3.scale.linear()
.domain([0, d3.max(data, function(d) { return d[1]; })])
.range([ height, 0 ]);
我尝试使用 d3v4 标准在我的版本中修复它
var x = d3.scaleLinear()
.domain([0, d3.max(data, function(d) { return d.value[0]; })])
.range([ 0, width ]);
var y = d3.scaleLinear()
.domain([0, d3.max(data, function(d) { return d.value[1]; })])
.range([ height, 0 ]);
问题出在您的 d3.max
上。您的数据是具有不同系列值的对象数组。如果你想找到所有值的最大值,你必须遍历所有 data.values,所以一种方法是获取所有值并将其平放在数组上,然后找到它的最大值。
var x = d3
.scaleLinear()
.domain([0, d3.max(data.map(s => s.value).flat(), d => d[0])])
.range([0, width])
var y = d3
.scaleLinear()
.domain([0, d3.max(data.map(s => s.value).flat(), d => d[1])])
.range([0, height])