2012-11-02 9 views
6

私は実際にthis graphとその機能が好きで、私が欲しい/必要とするものにぴったりです。私が変更する必要があるのは、y軸上の順序データを許可するために必要なことです。私はそれを仕事にすることはできません(私は初心者です)。序文データでのブラッシングは機能しません

私は序線形からYスケールを変更します。

yscale[k] = d3.scale.linear() .domain(d3.extent(data, function(d) { return +d[k]; })) .range([h, 0]));

yscale[k] = d3.scale.ordinal().rangePoints([h, 0]), 
     yscale[k].domain(data.map(function(d) { return d[k]; }))) 

にブラッシングはまだ現れ、それ自体で動作しますが、それは選択した行を残してフィルタリングしません。私がそれを軸の最上部に移動しないと、線が現れず、すべてまたはほとんどすべてが表示されます。私が火かき棒でコードを踏んだとき、それはブラシ領域にあった行だけが得られなかったように見えましたが、すべて(?)...そして私は理解できないようです。 :(誰もがこの(私がどのように変化し、する必要があり、特にすべての場所)を助けることができるならば、私はこの作業を取得し、私が間違っているの何を学ぶのが大好きだ

: -

答えて

5

\序をブラッシング定量的な軸をブラッシングするドメインを返しながら軸は、画素を返す。

https://github.com/mbostock/d3/wiki/SVG-Controls#wiki-brush_x

スケールは、典型的には、エクステントは、からのデータ空間にある場合に 定量的尺度として定義されます3210スケールのドメイン。しかし、代わりに、尺度 の尺度として定義することができます。範囲は、尺度の範囲 の範囲からのピクセルスペースです。

私は、ピクセルをドメイン値に逆変換して変換する必要があると思います。私は同じことをやろうとしているので、この質問を見つけました。私がそれを見つけ出すなら、私はあなたに知らせるでしょう。

編集:ここでは始めるには素晴らしい例です。

http://philau.willbowman.com/2012/digitalInnovation/DevelopmentReferences/LIBS/d3JS/examples/brush/brush-ordinal.html

function brushmove() { 
    var s = d3.event.target.extent(); 
    symbol.classed("selected", function(d) { return s[0] <= (d = x(d)) && d <= s[1]; }); 
} 

彼は(ピクセル単位)の選択範囲を掴み、次にシリーズのすべての要素を選択し、それらが範囲内にあるか否かを判断します。その要素に基づいて要素をフィルタリングし、データキーまたは何をフィルタに追加するかを返します。ここでのブラッシングと順序尺度の例がある

+0

ありがとう、私はすでにその例を見ていましたが、おそらく私はそれをよく見ていません:)。私は自分のコードを詳しく見て、ピクセルからドメイン値への変換方法を見ていきます。今私は手がかりがありません。ハハ。 あなたの仕事がうまくいけば、本当にアップデートをお願いします。 :) –

1

http://bl.ocks.org/chrisbrich/4173587

が@gumballheadが示唆するように、基本的な考え方は、あなたが戻って入力ドメインへのピクセル値を投影するための責任がある、です。この例の関連するスニペットは次のとおりです。

関連する問題