質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
D3.js

D3.jsとは、データに基づいてHTMLやSVGドキュメントを編集するために作られた、小規模なオープンソースのJavaScript可視化ライブラリです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

0回答

1093閲覧

c3.js timeseries chart X軸の d3を使ったtime format方法

baron_

総合スコア6

D3.js

D3.jsとは、データに基づいてHTMLやSVGドキュメントを編集するために作られた、小規模なオープンソースのJavaScript可視化ライブラリです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2018/06/23 00:34

前提・実現したいこと

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が渡されますが,これだけだと年の切り替わりは判定できない気がしています.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HayatoKamono

2018/06/23 01:10 編集

d3経験者です。可能かどうかと言ったら可能なはずです。d3は自分でロジックを書く必要はありますが、かなり柔軟にカスタマイズできるので。元の入力となる簡易的なデータを追記してもらえれば、暇な時間にちょっと試してみます。(約束は出来ませんが)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問