【发布时间】:2020-03-03 17:16:06
【问题描述】:
我是 D3 的新手,我正在尝试创建散点图图形。当我尝试在图形中创建点时,这显示不正确。
我有 9 个点要放入散点图中,但只出现 5 个。而且所有这些点都没有正确定位在它们的位置上。例如,我们有一个 in (0, 0) 并且正确地在 x = 0 上,但在 y 轴上的位置不是 0 几乎是 2。
所有点的数据为:
name: GOMEZ IGUAL, ANNA x: 0.00 y: 20.00
name: PARKS, ROBYN LASHAE x: 15.00 y: 20.00
name: CASAS CARRERAS, QUERALT x: 25.00 y: 20.00
name: ABALDE DIAZ, TAMARA x: 15.00 y: 0.00
name: TIRERA, MEIYA x: 15.00 y: 0.00
name: BUCH ROSELL, ROSO x: 0.00 y: 0.00
name: BROWN, JOY ALEXIS x: 15.00 y: 20.00
name: RAMAN, JANA GEORGES R x: 0.00 y: 20.00
name: REISINGEROVA, JULIA x: 15.00 y: 0.00
我画点的代码是:
setPointsToCanvas(canvas, data, scales){
console.log("data length: " + data.length);
for (let i = 0; i < data.length; i++){
console.log("name: " + data[i].name + " x: " + data[i].value_x + " y: " + data[i].value_y);
}
console.log("\n");
canvas.selectAll("circle")
.data(data)
.enter().append("circle")
.attr("class", "dot")
.attr("r", 5.5) //Radius size, could map to another dimension
.attr("cx", function(d) { return scales.xScale(parseFloat(d.value_x)); }) //x position
.attr("cy", function(d) { return scales.yScale(parseFloat(d.value_y)); }) //y position
.style("fill", "#FFC107")
.on("mouseover", this.tipMouseOver);
}
这怎么可能?我做错了什么?
编辑我:
为什么在 9 中只显示 5 个点是因为有 (x, y) 重复,我只看到其中一个。
但是,如果我们看一下图形,我们可以看到这些点正确地位于 x 轴上,而不是 y 轴上。例如,让我们检查 x = 0. (0, 0) 和 (0, 20) 上的点。我们可以在 x 轴的 0 值上看到两个点,但这些点在 y 轴上的位置是错误的,y 值 0 是 2 值,而 y 值 20 是间隙中的 21 值左右。
这怎么可能?我做错了吗?
编辑二:
这是一个代码框
编辑 III:
如果我在 y 位置减去 1.50,那么这些点的位置是正确的:
.attr("cy", function(d) {
return scales.yScale(parseFloat(d.value_y) - 1.50);
})
为什么我必须这样做?发生了什么事?有没有更好的选择来解决这个问题?我做错了吗?
【问题讨论】:
-
您可以将codesandbox 添加到您的问题中吗?这将有助于解决您的问题。
-
好的,请给我一些时间来做!这将是我的第一个密码箱 :)
-
完成了!!! @Ma'mounothman
标签: javascript reactjs d3.js