前提・実現したいこと
javascriptで下記のようなデータからc3.jsのtimeseries chartを使用して線グラフを描写しようとしています.
typeごとにX軸を時系列,Y軸をcountとするイメージです.
■ c3.js timeseries chart
https://c3js.org/samples/timeseries.html
■データフォーマット
{ date: "2018-02-10 10:15", count: 10, type: "error" }
{ date: "2018-02-10 10:15", count: 8, type: "warning" }
{ date: "2018-02-10 10:15", count: 50, type: "success" }
{ date: "2018-02-11 10:15", count: 7, type: "error" }
{ date: "2018-02-11 10:15", count: 10, type: "warning" }
{ date: "2018-02-11 10:15", count: 40, type: "success" }
{ date: "2018-02-11 10:15", count: 12, type: "error" }
{ date: "2018-02-11 10:15", count: 20, type: "warning" }
{ date: "2018-02-11 10:15", count: 70, type: "success" }
...
課題
グラフを描写するためのデータは上記の例だと同じtypeのデータが1日間隔でありますが,例えば1週間ごと,1か月ごとのデータしかない場合もありえます.
また,時系列のminとmaxの期間も1週間,1か月,数か月,1年,1年数か月,数年という様々なパターンがありえます.
そこで,X軸で表示する時間のフォーマットをある程度見やすい形にフォーマットしたいです.
(たとえば,1週間のデータの折れ線グラフでは"month-day"の形式で表示する,とか)
フォーマット自体はc3.jsのaxis.x.tick.formatで指定できるのはわかりました.
ただ,ロジック部分を書くためにd3が良さそう,まではわかったのですが,たとえば2017年6月からの1年間(2018年6月まで)のデータで,プロット間隔が分からない(1時間かもしれないし,1日かもしれない)場合,X軸のtickに年の切り替わり部分だけ2018と表示し,それ以外は月を表示するといったことは可能でしょうか?
以下のようなイメージです.
-----|-----|-----|-----|-----|-----
11 12 2018-1 2 3
c3.jsのaxis.x.tick.formatだとコールバック関数にはdateが渡されますが,これだけだと年の切り替わりは判定できない気がしています.
あなたの回答
tips
プレビュー