如何反转 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.

强制执行特定长度