[Google Charts] Timeline

投稿者: | 2021年2月23日

Google ChartsにTimelineというチャートがあります。御覧のように横軸に時間を置き、個々のアイテムの時間的長さを表示するものです。

今回はTimelineのノーマルな描画の仕方のあと、ツールチップのカスタマイズや、Spreadsheetからのデータ読み込みとグラフ描画に取り組んでみたいと思います。

Timelineのデータフォーマット

公式サイトにありますが、Timelineのデータフォーマットは以下の通りで、これに従ってデータテーブルを作成していくことになります。

Column 0Column 1Column 2Column 3Column 4
Purpose:Row labelBar labelTooltipStartEnd
Data Type:stringstringstring number or datenumber or date
Role:datadatatooltipdatadata

Column 1 と Column 2 は optional なので、必要ない場合は省略できます。

Column 1 はバーに直接書くラベル、Column 2 はツールチップをカスタマイズする場合に使用する任意の文字列です。

Timelineの基本的なコード

上記のフォーマットに従い、次に表示するようなタイムラインを描画することを考えます。

この場合のサンプルコードは、以下となります。

データフォーマットに従って、”Row Label”, “Bar Label”, “Start”, “End” にパラメータを格納します。

ここではツールチップはカスタマイズしないので、”Column 2″は使用していません。

この場合、ツールチップの表示はデフォルトのものとなります。

ツールチップのカスタマイズ

では、こちらのツールチップをカスタマイズしてみましょう。

先に記載したように、ツールチップに任意の文書や文言を入れたい場合は、optional である Column 2を使用します。

データセットに Column 2 を定義し、

データを追加するときに、ツールチップに表示したい値を追加しています。

コードにあるようにツールチップにはhtmlタグを埋め込むことも可能です。その場合は、オプションパラメータとして isHtml: true を使用します。

このような対応をすると、次のようなタイムラインが得られます。

マウスオーバーで、カスタマイズされたツールチップが表示されているのがわかります。

但しこの場合、デフォルトのツールチップは表示されなくなります。

この場合、2番目、3番目のバーにはツールチップをブランクとしていますので、マウスオーバーしても何も表示されません。

spreadsheetからの読み込み

最後に、スプレッドシートから読み込みをしてみましょう。

基本的にはデータをそのままスプレッドシートに記載しておきます。

こちらを読み込むことで、タイムシートを表示させることもできます。

サンプルコードは以下。

一つポイントを挙げるなら、次の部分です。

setColumnProperty メソッドを利用して、Index 2のカラムのプロパティに role = “tooltip” であることを設定します。

Index 2 のカラムは特殊で、ここの部分の設定がないと、次のようにカラム数が不適切であるというエラーメッセージが発生します。

Invalid data table format: must have 3 or 4 data columns.

setColumnProperty で role を明記しておくと、spreadsheetにデータを記載しておくことで、次のようにツールチップもカスタマイズしたタイムラインが描画できるというわけです。