为什么我的圆圈不会以“像素”单位显示?

问题描述:

我定义为为什么我的圆圈不会以“像素”单位显示?

nodes = [{ 
    x: xRange(xvalue), 
    y: yRange(getY(xvalue)), 
    ... 
}] 

vis.selectAll(".nodes") 
    .data(nodes) 
.enter().append("circle") 
.attr("class", "nodes") 
.attr("cx", function (d) { 
    return d.x; 
}) 
.attr("cy", function (d) { 
    return d.y; 
}) 
.attr("r", "7px") 
.attr("fill", "black") 
.attr("transform", function (p) { 
    return "translate(" + p.x + "," + p.y + ")"; 
}) 

我想保持点的坐标中的“像素”单位,而不是“轴”单位组圆。唯一的问题是我的积分不会显示,除非它们出于某种原因处于“轴”单位。下面是测试用例来说明这一点:

Pixel Units

Axis Units

在两种情况下,我已经包括在第一象限,它使用“像素”单元的测试点。测试点可以使用像素但其他人不能使用,有什么理由吗?

对于我的圈子我使用语句

.attr("transform", function (p) { 
     return "translate(" + p.x + "," + p.y + ")"; 
    }) 

这是麻烦的,因为它会导致点转换基于轴单位。通过将其更改为

.attr("transform", function (p) { 
     return "translate(" + xRange.invert(p.x) + "," + yRange.invert(p.y) + ")"; 
    }) 

翻译将正确采用像素单位并对它们进行图形绘制。

Proof