2017-08-08 9 views
2

私はこの例を勉強しています:https://bl.ocks.org/d3noob/2505b09d0feb51d0c9873cc486f10f67 がd3noobによって作られていて、最初と最後のドットが部分的にマージンにあることに気付きました。ドットを余白から遠ざけるために、x.domainの両側にバッファを作成する方法が不思議です。d3.jsの日付を扱うドメインを変更するには?

私はこれの責任行は次のようであると信じています:

x.domain(d3.extent(data, function(d) { return d.date; })); 

私はd3.minとd3.maxで、この行を変更しようとしたが、x軸があるとして、これは動作していないよう日付を扱う

答えて

1
あなたが考慮したいと思うかもしれません

:ここ

x.domain([d3.timeDay.offset(d3.min(data, function(d) { 
    return d.date; 
}), -2), d3.timeDay.offset(d3.max(data, function(d) { 
    return d.date; 
}), +2)]); 

更新bl.ocksです:開始から2日間減算とxドメインの末端で2日間を追加すると、例えば

d3fc extent componentを試してください。あなたのケースでは、次のように、あなたはXスケールのいずれかの側に1日追加することができます。

var xExtent = fc.extentDate() 
    // the property of the data that defines the x extent 
    .accessors([function(d) { return d.date; }]) 
    // pad in domain units (in this case milliseconds) 
    .padUnit('domain') 
    // ensure that the scale is padded by one day in either direction 
    .pad([millisPerDay, millisPerDay]); 

x.domain(xExtent(data)); 

また、Yドメインの範囲の計算を簡素化するために、このコンポーネントを使用することができます。

var yExtent = fc.extentLinear() 
    // the property of the data that defines the y extent 
    .accessors([function(d) { return d.close; }]) 
    // pad by 10% in the +ve direction 
    .pad([0, 0.1]) 
    // ensure that the extent includes zero 
    .include([0]); 

y.domain(yExtent(data)); 

はここです完全な例:https://bl.ocks.org/ColinEberhardt/4b8737e0251f92075693a6e04df72638

関連する問題