D3 - attr“r”与总屏幕尺寸相比较

时间:2015-02-13 06:20:56

标签: d3.js

这可能有些问题,但我试图比较" r"圆的属性为所提供的屏幕大小的总宽度。我想这样做是因为我有一个topojson d3地图和一些以km为单位的环绕点,我认为在提供的km中绘制r尺寸与地图上的实际尺寸相比会很棒。

所以 - 在一边到另一边它将是大约40006公里(在地球周围),所以我试图建立一个转换,使它看起来(有点)真正的大小。

所以我要确定的是,如果r值恰好或非常接近宽度的100%,那么它就像是

  x                                    data in km
 _________           convert          ___________
 100% width r                          40006 km

其中x应该是我正在寻找的r尺寸。

所以我有一个适合div的地图,我想知道是否有某种方法可以确定r值是该屏幕宽度的100%。谢谢!

1 个答案:

答案 0 :(得分:1)

要解决该问题,请创建比例:

var scale = d3.scale.linear()
    .domain([0, 40006])
    .range([0, screenWidth]);

然后使用它来获取单个值,如下所示:

scale(40006) // Outputs the screen width

或者在创建积分时使用它,或多或少是这样的:

svg.selectAll(".point").data(pointsData)
    .enter().append("circle")
        .attr("class", "point")
        .attr("r", scale)
        .attr("cx", ...)
        .attr("cy", ...);

有关比例的更多信息,请查看D3's wiki

获取屏幕宽度pick your poison