2016-09-14 32 views
8

私はd3.jsを使用して平行座標プロットを作成していますが、私が望むように軸ラベルをフォーマットするのは難しいです。dimension変数内で.domain、tickFormat、およびtickValuesが認識されないのはなぜですか? (d3、平行座標)

たとえば、私の軸の1つ、「Buffer Concentration」は、ディメンション変数を使って指定したログスケールでプロットされます。あなたは、以下の結果のプロットから見ることができるよう

var dimensions = [ 
    ... 
    { 
    key: "b.Conc", 
    description: "Buffer Concentration", 
    type: types["Number"], 
    scale: d3.scale.log().domain([.1, 100]).range([innerHeight, 0]), 
    tickValues: [.1,.2,.4,.6,.8,1,2,4,6,8,10,20,40,60], 
    tickFormat: d3.format(4,d3.format(",d")) 
    }, 
    ... 
]; 

しかし、私の試みがある(tickValues経由)に示されている目盛りラベルを指定すると、彼らは普通の数字ではなく、(tickFormatを通して)10の累乗として示されていること働いていない。さらに、軸はscaleで指定したドメインにまたがっていません。 [0.1,100]ではなく[0.1,60]でなければなりません。

これはなぜですか?

Section of Parallel Coordinates Plot

コード

data.csv、私のプロットのためのindex.htmlとのstyle.cssファイルには、hereを見つけることができます。ローカルで開くと、Firefoxでしか動作しません。

私は何か基本的なものが欠けている場合は、任意のヘルプと謝罪のために事前に感謝 - 私はd3に新しいです。

+0

JSFiddleを提供してください。 –

答えて

3

あなたがカスタムティックを適用し、このラインで生成されたスケールに値をチェックするのを忘れているようだ:https://gist.github.com/LThorburn/5f2ce7d9328496b5f4c123affee8672f#file-index-html-L189

わからないが、このようななめらかに役立つはずです。

if (d.tickValues) { 
     renderAxis.tickValues(d.tickValues); 
    } 

    if (d.tickFormat) { 
     renderAxis.tickFormat(d.tickFormat); 
    } 
+0

ああ、それはトリック、ありがとう! –

関連する問題