如何反转 d3 的线性刻度?
How to reverse linear scale for d3?
我正在尝试创建一个网络,其中权重最高的边在其关联节点之间的距离最小。我尝试了如下所示的笨拙方法,即简单地给出范围内的 "minimum" 输出,即最高实际输入,并对 "maximum" 输出执行相反的操作。
然而,这并没有完全奏效。虽然没有出现任何错误并绘制了可视化效果,但仍然有一些权重较低的边与权重较高的边相比距离更小。有没有更好的方法来反转线性刻度的输出?或者这个问题是因为我的代码有什么不同吗?
var distance_scale = d3.scale.linear()
.domain([min, max])
.range([max * 0.0015, min * 0.0015]);
var svg = d3.select("body")
.append("svg")
.attr("width", w)
.attr("height", h);
var force = d3.layout.force()
.links(data.edges)
.nodes(data.nodes)
.size([w, h])
.linkDistance(function(d) {
return distance_scale(d.weight)
})
.charge([-1000])
.start();
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
强制布局中的link距离仅供参考。无法为特定 link.
强制执行特定长度
我正在尝试创建一个网络,其中权重最高的边在其关联节点之间的距离最小。我尝试了如下所示的笨拙方法,即简单地给出范围内的 "minimum" 输出,即最高实际输入,并对 "maximum" 输出执行相反的操作。
然而,这并没有完全奏效。虽然没有出现任何错误并绘制了可视化效果,但仍然有一些权重较低的边与权重较高的边相比距离更小。有没有更好的方法来反转线性刻度的输出?或者这个问题是因为我的代码有什么不同吗?
var distance_scale = d3.scale.linear()
.domain([min, max])
.range([max * 0.0015, min * 0.0015]);
var svg = d3.select("body")
.append("svg")
.attr("width", w)
.attr("height", h);
var force = d3.layout.force()
.links(data.edges)
.nodes(data.nodes)
.size([w, h])
.linkDistance(function(d) {
return distance_scale(d.weight)
})
.charge([-1000])
.start();
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
强制布局中的link距离仅供参考。无法为特定 link.
强制执行特定长度