D3数学函数创建
D3 Mathematical Function Create
我想为我的D3页面创建一个数学函数。
- 每个节点都有一个";得分;我可以通过
d.score
获得
我喜欢创建一个函数,根据分数绘制圆的半径。
我考虑了以下内容:
r<=10,r>=3
10-(d.score/50)=r
我如何在D3中做到这一点?
.attr('r', function(d) {
return node_size( * * ? ? ? * * );
});
谨致问候,Marc
请注意,这可能是一个糟糕的问题,因为它的字符是"请给我这个问题的代码"。
不管怎样,我想这就是你想尝试的,我想:
.attr('r', function(d) {
var r = 10 - (d.score / 50);
if (r > 10) {r = 10;}
else if (r < 3) {r = 3;}
return r;
});
首先,您需要定义一个线性比例,将node_size
的值映射到实际半径,如下所示(示例):
r = d3.scale.linear().range([3,10]);
然后将score
参数的值指定为域,如下所示(假设DATA
是您的数据结构)
// first define your radius according to your formula specified in your question.
DATA.forEach(function(d){
d.radius=10 - (d.score / 50);
})
//Then, assign is as a domain of your radius function
r.domain(d3.extent(DATA.map(function(d){return d.radius;})))
最后,当绘制数据时,你应该这样做:
.attr('r', function(d) {return r(d.radius)});
您可以合并或优化这些步骤,但我认为这是一个良好的开端。
希望这能有所帮助。
相关文章:
- 如何在HTML元素上创建函数,而不是将元素作为参数传递
- Javascript创建函数,以便在其他函数之间共享变量
- 调用函数和创建函数实例之间的Javascript差异
- setTimeout是否创建函数实例
- 使用 eval 从字符串创建函数的不同方法
- 如何在jquery中创建函数和parent.function
- 在for循环中创建函数
- 如何使用php代码创建函数Javascript弹出框
- 如何避免在循环中创建函数
- 在Javascript的函数原型中创建函数
- 在JS中动态创建函数
- 为什么在Javascript中创建函数有两种不同的方法
- 在循环中创建函数的最有效替代方法
- Javascript循环创建函数并使用收到的基于PHP Query的id附加值
- 如何在 Javascript 命名空间脚本中创建函数数组
- 在 JavaScript 中创建函数的原型
- 在 javascript 中创建函数的不同方式
- 如何创建函数式方法
- Javascript:在 for 循环中创建函数
- 在 JavaScript 中创建函数以启用/禁用基于选择的输入