3

我有点卡在某事上,我希望也许有人可以为我指出解决方案的正确方向。由于搜索的措辞,在 Google 上运行搜索对我没有多大帮助。

我想要做的是获取图表上 x 位置的“值”。在我的图表上,我的 x 轴由日期组成。因此,如果我知道图表上绘制的 x 坐标点是 200,例如,我想要 x 位置 200 的日期标签。有很多教程和示例演示如何检索 x 坐标( 200),但不是 x 坐标值(x 位置 200 的日期对象)。

我最终要做的是构建一个用户注释功能,它允许用户在图表上选择一个 x 位置,然后在该点做一个注释。我需要为该笔记存储一个对象,其中包含其坐标的 x 和 y 值,并且由于通过将 Date 对象应用于 .x 来映射和重新映射图表上的点,因此我需要获取任何点的 Date我在图表上绘制,以便可以记录和重新应用它们,甚至在用户决定移动笔记工具时移动它们。

无论如何,我正在寻找一种方法来对这个进行逆向工程......

function getDateX(x, data) {
    var dateX = x(data.Date);
    return dateX;
}

...但在这种情况下,不是取回 x 坐标位置,而是根据提供的 x 坐标位置取回日期。

任何指向您可以为我提供的解决方案的指针将不胜感激。谢谢你的时间。

4

1 回答 1

5
var x = d3.scale.linear()
          .domain([0,200])
          .range([new Date("2000-01-01"), new Date("2001-01-01")]);

new Date(x(150))

// Sun Oct 01 2000 21:00:00 GMT+0900 (東京 (標準時))

或者,如果您已经有一个日期 -> 数字的比例

var x = d3.time.scale()
          .range([0,200])
          .domain([new Date("2000-01-01"), new Date("2001-01-01")]);

x.invert(150)

// Sun Oct 01 2000 21:00:00 GMT+0900 (東京 (標準時))
于 2013-03-25T07:15:26.430 回答