我确信解决方案是直截了当的,但是当我将圆圈绘制到地图上时,我正试图找出如何限制半径范围。我的值大小范围很大,而较大的值最终覆盖了大量的地图。
d3.csv("getdata.php", function(parsedRows) {
data = parsedRows
for (i = 0; i < data.length; i++) {
var mapCoords = this.xy([data[i].long, data[i].lat])
data[i].lat = mapCoords[0]
data[i].long = mapCoords[1]
}
vis.selectAll("circle")
.data(data)
.enter().append("svg:circle")
.attr("cx", function(d) { return d.lat })
.attr("cy", function(d) { return d.long })
.attr("stroke-width", "none")
.attr("fill", function() { return "rgb(255,148,0)" })
.attr("fill-opacity", .4)
.attr("r", function(d) { return Math.sqrt(d.count)})
})
这就是我现在所拥有的。
答案 0 :(得分:2)
您可能希望通过设置domain
(最小/最大输入值)和range
(最小/最大输出允许值)来使用d3 scales
。为方便起见,请不要犹豫,使用d3.min
和d3.max
来设置域名的值。
d3.scale
将返回一个在分配r
属性值时可以使用的函数。例如:
var scale = d3.scale.linear.domain([ inputMin, inputMax ]).range([ outputMin, outputMax ]);
vis.selectAll("circle")
// etc...
.attr( 'r', function(d) { return scale(d.count) });