2017-12-10 4 views
3

http://techanjs.org/で使用されているコードとほとんど同じコードを使用しています。開発者がグラフをhereにレンダリングしたときに、グラフにズーム機能を追加しようとしていました。しかし何とか私はそれをズームすることができません。エラー選択がコンソールで定義されていません。私はチャートをレンダリングするために次のコードを使用しています。 https://paste.fedoraproject.org/paste/7gJq9wKL4h4s862EDuxnQQ。私はここで何か間違っていると確信しています、私はまだD3を学んでいるので、私はそれに関する援助を得る場合は本当に感謝します。d3 techanjsをズームできません

+1

、最小完全、かつ検証例 ずに言うのは本当に難しい - https://stackoverflow.com/help/mcve - エラーを投げているもの、たとえば、それは?それ以上の情報がなければ、助けはかなり難しいです。 – Fraser

+0

私は本当に他の機能がズームと一緒に欲しいので、それを最小化するのは難しいです。 – DAKSH

+0

それから、賞金が払い戻されると、投票を終了します。 - デバッグのヘルプを探す質問(「なぜこのコードは動作しませんか?」)には、目的の動作、特定の問題またはエラー、質問自体。単純なエラーは、定義されていない関数で "選択"を使用しようとしているためです。 – Fraser

答えて

2

私は変数selectionを参照していますが、定義されていないことが問題だと思います。したがって

-

選択が

selectionが定義されていませんが、あなたのbigchart関数に渡されるパラメータです。

ただし、定義されていない機能のresetzoomedで使用します。

//Zoom Begins 
function reset() { 
     zoom.scale(1); 
     zoom.translate([0,0]); 
     selection.call(draw); // this will throw an error 
    } 

    function zoomed() { 
     x.zoomable().domain(d3.event.transform.rescaleX(zoomableInit).domain()); 
     y.domain(d3.event.transform.rescaleY(yInit).domain()); 
     yPercent.domain(d3.event.transform.rescaleY(yPercentInit).domain()); 

     selection.call(draw); // this will throw an error 
    } 
//Zoom Ends 

いずれか、固定(他の機能のような)パラメータとして関数に選択を渡すために - あるいはそれはresetzoomed機能で参照できるようにselectionBigChartのプロパティします。あなたは明らかに関数を呼び出すとき

すなわち

// pass selection to the functions as a parameter 

function reset(selection) { 
    zoom.scale(1); 
    zoom.translate([0,0]); 
    selection.call(draw); 
} 

function zoomed(selection) { 
    x.zoomable().domain(d3.event.transform.rescaleX(zoomableInit).domain()); 
    y.domain(d3.event.transform.rescaleY(yInit).domain()); 
    yPercent.domain(d3.event.transform.rescaleY(yPercentInit).domain()); 
    selection.call(draw); 
} 

は、その後、例えば...正しいオブジェクトを渡します。

zoom = selection.call(d3.zoom().on("zoom", zoomed)); 

ではなく

zoom = d3.zoom().on("zoom", zoomed), 
+0

ズーム= selection.call(d3.zoom()。on( "zoom"、zoomed))を使用すると、コードを試しました。私は、その行には選択が定義されておらず、チャートはレンダリングされていません。しかし、私がズーム= d3.zoom()。on( "zoom"、zoomed)を使用すると、チャートはうまくレンダリングされますが、ズームしようとするとエラーが発生します。なにか提案を? – DAKSH

+0

はい、最小、完全、および検証可能な例を投稿してください - stackoverflow.com/help/mcve - 例のzoom = selection.call(d3.zoom()。on( "zoom"、zoomed));どのように選択肢に合格するかを示すことでした。コピーして貼り付けることではありませんでした。明らかに "選択"は使用する前に定義されていません - それが問題の根です! – Fraser

+0

http://bl.ocks.org/andredumas/edf630690c10b89be390で別のコードセットが見つかりました。ブラウザの幅に合わせてサイズを変更することは可能ですか?ここではズームが完璧に機能するからです。 – DAKSH

関連する問題