javascript - 如何将鼠标单击 x 值转换为 d3 中 x 轴域中的值?

标签 javascript d3.js

我在 d3 中创建了一个 x 轴,如下所示。请注意,data.x 的最小值为 -3,最大值为 +3。

var data = [ {x:-3, y:20}, {x:3, y:10}, ... {x:-2, y:15} ];
var xmin = d3.min(data, function(d) { return d.x; });
var xmax = d3.max(data, function(d) { return d.x; });
var x = d3.scale.linear().domain([xmin, xmax]).range([0, 220]);
var xAxis = d3.svg.axis().scale(x).orient('bottom');
d3.select(this).append('g')
 .on('click', function(d) { 
  var xPos = d3.event.x; //how do i convert this value to a valid value on the x-axis?
 })
 .call(xAxis);

xAxisx 对象上是否有一个 util 函数允许我将鼠标点击位置的 x 值映射到x轴?

问题在 plnkr http://plnkr.co/edit/RFOoYxtBgNPcV4cnR4F5 上有详细说明.

最佳答案

这样做:

.on('click', function(d) { 
  var xPos = x.invert(d3.event.x); 
 })

这里函数x是

var x = d3.scale.linear().domain([xmin, xmax]).range([0, 220]);

关于javascript - 如何将鼠标单击 x 值转换为 d3 中 x 轴域中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37370501/

相关文章:

Javascript - 需要仅从 SVG 路径的笔画获取 x 和 y 坐标?

JavaScript:undefined++的结果是NaN,不是undefined?

javascript - 页面刷新后如何继续跑马灯?

javascript - 取消嵌套和减少javascript中的数据结构

d3.js - D3 - 将 y 轴标签移动到线上

javascript - d3.geoEquirectangular() 对 map 的渲染不一致

javascript 函数总是返回 false

javascript - 如何设置与容器相同的嵌套DIV高度?

javascript - 如何在 Angular JS 中加载 CSV 文件来制作图表

javascript - 如何在圆环图中的扇区之间缩进?