2013-01-03 22 views
6

X軸をカテゴリに保ってデータセットから折れ線グラフを作成しようとしています。それは観察Xとの間の等距離間隔を有する線グラフのようになり、観察者について 座標:d3.jsとnvd3.jsで序数x軸を使用する線グラフ

(1 ------ 5 ------ 30 ------ 600)

(1-5 ----- 30 ------------------- 600)

:今、私はこのような何かを取得していますについては

これは私のデータセットです:

var ds1 = [ 
    { 
    key: 'VAR-1', 
    color: '#FF7F0E', 
    values: [ 
    { "x" : "600", "y" : 0.07706} 
, { "x" : "30", "y" : 0.00553} 
, { "x" : "5", "y" : 0.00919} 
, { "x" : "1", "y" : 0.00969} 
    ] 
    } 
]; 

私は作成しようとしました序数軸を設定し、折れ線グラフオブジェクトに設定します。

var chart =nv.models.lineChart() 
      .margin({top: 10, bottom: 40, left: 60, right: 30}); 
var x = d3.scale.ordinal().domain(["1","5", "30", "600"]); 
chart.xAxis.scale(x); 

chart.yAxis 
    .tickFormat(d3.format(',.3f')); 

chart.forceY([0]); 

d3.select('#exampleOne') 
    .datum(ds1) 
    .transition().duration(500) 
    .call(chart); 

ただし、プロットでは何も変化していないようです。

NVD3折れ線グラフの実装で順序軸が有効になっている可能性がありますか、この折れ線グラフは数値データ用に書かれていますか?

PS:私はd3.jsを初めて使ったので、ここで何か間違っている可能性があります。

+0

ソリューションを投稿できますか? – Becky

答えて

2

スケールのrangeBounds([0、chartWidth])を設定してみてください。 すなわち

d3.scale.ordinal().domain(["1","5", "30", "600"]).rangeBounds([0, width]); 

訂正:私はあなたのスケールを変更することが必要と思っていますが、実際に行が値が等距離にプロット持っていることをプロットします。これを行うには、lineGraphに送信するデータセットを変更する必要があります。

var ds1 = [ { 
key: 'VAR-1', 
color: '#FF7F0E', 
values: [ 
{ "x" : "4", "y" : 0.07706} 
, { "x" : "3", "y" : 0.00553} 
, { "x" : "2", "y" : 0.00919} 
, { "x" : "1", "y" : 0.00969} 
]} 
]; 

そのようにx軸に示す値が序になりながら(すなわち1、5、30、600)、値が線形スケールであろうラインに対してプロット。

+0

ありがとう、私はドキュメントでrangeBands(..)を調べましたが、軸テロップは序数を使って等距離に見えるように変わりません。 – user1946927

+1

グラフティッカーが等距離に見えるようにするか、グラフ上にプロットされた点がx軸上で等距離になるようにしますか?上記のコードは、xAxisティックマーカースケールを変更しますが、上記のデータを使用してプロットされるラインのスケールは変更しません。残念ながら、これをNVD3 APIで変更するための直接アクセッサはありません。 nv.d3.jsのmodels.lineChartの実装を見てください。これを実装する方法の1つは、X軸データ項目をその位置のインデックスを表す値に変換することです。 – baradas

0

nvd3の任意のラインまたは散布図に序数ドメインを設定することはできないと思います。これらの線はmodels.scatter定義である:

if (isNaN(x.domain()[0])) { 
     x.domain([-1,1]); 
    } 

    if (isNaN(y.domain()[0])) { 
     y.domain([-1,1]); 
    } 

が明らかにこれは、折れ線グラフの下に、グラフのこのタイプ(任意のxに対して序スケール又はYスケールを許可しないであろう他の非棒グラフの最もそうみたいです)。

関連する問題