3

私は何かに少し行き詰まっており、誰かが解決策の正しい方向に私を向けることができることを望んでいました. 検索の文言が原因で、Google で検索を実行してもあまり役に立ちません。

私がやろうとしているのは、グラフ上の x 位置の「値」を取得することです。私のグラフでは、x 軸は日付で構成されています。たとえば、グラフにプロットされた x 座標ポイントが 200 であることがわかっている場合、x 位置 200 の日付ラベルが必要です。x 座標を取得する方法を示すチュートリアルと例がたくさんあります ( 200)、x 座標値 (x 位置 200 の Date オブジェクト) ではありません。

私が最終的にやろうとしているのは、ユーザーがグラフ上の x 位置を選択し、その時点でメモを作成できるようにするユーザー メモ機能を構築することです。座標の x 値と y 値を含むそのメモのオブジェクトを保存する必要があります。グラフ上のポイントは、Date オブジェクトを .x に適用することによってマップおよび再マップされるため、すべてのポイントの日付を取得する必要があります。グラフにプロットして、記録して再適用できるようにします。また、ユーザーがメモ ツールを移動することを決定した場合は、移動することもできます。

とにかく、私はこれをリバースエンジニアリングする方法を探しています...

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

...しかし、この場合、x 座標位置を取得する代わりに、提供された x 座標位置に基づいて Date を取得します。

あなたが私に提供できる解決策への指針は大歓迎です。御時間ありがとうございます。

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 (東京 (標準時))

または、既に Date -> number のスケールがある場合

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 に答える