2017-06-20 11 views
1

をdc.js:カスタムタイムラインD3とダニと私は、次のチャートを持って

scrollChart 
    ... 
    .x(d3.time.scale().domain([startDate, endDate])) 
    .round(d3.time.minutes) 
    .alwaysUseRounding(true) 
    .xUnits(d3.time.minutes); 

は、どのように私は時間間隔として各5/10/15分を使用するように私の.xUnits.roundを変更することができますか?

更新:

ゴードンの答えは助けたが、私はズームした後、新たな問題を抱えています。

これは、5分間隔である: enter image description here

そして、私のズーム後に私が悪いのチャートを持っている:(どのように私はフィルタリング後のすべての1分間隔に「再グループ化」することができ、それは本当の

enter image description here

ですか??
+0

[chart.round()](http://dc-js.github.io/dc.js/docs/html/dc.coordinateGridMixin.html#round__anchorは)のみブラシ丸めに影響を与えます。興味のある時間間隔で集計したいと思うかもしれません。[ここでは、異なる時間間隔を切り替える例です。](http://dc-js.github.io/dc.js/examples/switching-time -intervals.html) – Gordon

+0

@Gordonあなたは正しいですが、私は間隔を使って、 'month'、' day'、 'hour'ではなくカスタムタイムラインが必要です –

+1

Gotcha、多分このスレッドを試してみませんか? https://groups.google.com/forum/m/#!topic/dc-js-user-group/q_dO0pRf3vA – Gordon

答えて

1

助けてくれてありがとうGordon。 私はd3.js version 3thisトピックを使用していました。それが露出していないので、 は、まずあなたが、d3_time_interval機能をコピーする必要があります。

次関数を作成し、グループ化に使用しました。

const n_minutes_interval = (nMins) => { 
    let denom = 6e4*nMins; 
    return d3_time_interval(
     date => new d3_date(Math.floor(date/denom) * denom, 
     (date, offset) => date.setTime(date.getTime() + Math.floor(offset) * denom, 
     date => date.getMinutes()); 
} 

let myTimeInterval = n_minutes_interval(5); 
let myGroup = dim.group(d => myTimeInterval(d)).someReduceFunction(); 
関連する問題