Angular で動くチャートを実装しよう - Ignite UI for Angular サンプルアプリケーションのご紹介

![20210127232942.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/785128/e1b9ae0e-c5d0-618a-925a-b53cdb2f9669.jpeg)
本記事では<a href="https://jp.infragistics.com/products/ignite-ui-angular" target="_blank"> Ignite UI for Angular</a> のチャートコンポーネントとその他いくつかのコンポーネントを組み合わせて、動きのあるチャート表現を実装したサンプルアプリケーションをご紹介します。サンプルコードはダウンロードいただけますので、チャート表現のご参考に是非ご利用ください。

## 2008~2017年 男子テニスシングルス ATPポイントランキング

サンプルアプリケーションの実際の挙動は以下よりご確認いただけます。
<a href="https://igjp-sample.github.io/moving-chart/" target="_blank">サンプルを確認する</a>

スクリーンキャストでも動作イメージをご紹介します。
[![Image from Gyazo](https://i.gyazo.com/0804cf7bcbf70cb668878b7d0d8c9f5c.gif)](https://gyazo.com/0804cf7bcbf70cb668878b7d0d8c9f5c)

こちらのサンプルアプリケーションでは、2008~2017年の10年間の男子テニスシングルスにおいて、世界ランキングを決定する際の指標となるATPポイントの上位トップ10の推移をグリッドとチャートを用いて表現しています。

## データソースに関して

データソースは <a href="https://datahub.io/sports-data/atp-world-tour-tennis-data" target="_blank">こちらのサイト</a> で公開されているオープンデータをJSON形式で利用しています。

以下はデータソースの一部を抜粋したものですが、 `week_title` を時間軸として 250 ミリ秒毎にデータソースを切り替えることで、グリッドとチャートに表示される情報を更新し、結果としてアニメーションのような表現となっています。また、ポイントや順位、選手名の情報のほか、 `move_direction` という前回結果から順位が up/down したかの情報を利用しています。

```json
[
    {
      "week_title": "2017.11.20", //更新年月日
      "rank_number": 1, //順位
      "move_direction": "", //順位が変化した場合の変化方向
      "ranking_points": 10645, //ポイント
      "player_slug": "rafael-nadal", //選手名
    },
    {
      "week_title": "2017.11.13",
      "rank_number": 2,
      "move_direction": "down",
      "ranking_points": 7000,
      "player_slug": "rafael-nadal"
    }
]
```

## サンプルに使用しているコンポーネント

今回のサンプルでは、データグリッド・データチャート・スライダーの3つのコンポーネントを組み合わせています。
[![Image from Gyazo](https://i.gyazo.com/ac4d4911bce43419e03684dade0bf28b.png)](https://gyazo.com/ac4d4911bce43419e03684dade0bf28b)

<span style="color:red">赤枠</span>：<a href="https://jp.infragistics.com/products/ignite-ui-angular/angular/components/grid/grid" target="_blank">データグリッド</a>
<span style="color:blue">青枠</span>：<a href="https://jp.infragistics.com/products/ignite-ui-angular/angular/components/data-chart" target="_blank">データチャート</a>
<span style="color:green">緑枠</span>：<a href="https://jp.infragistics.com/products/ignite-ui-angular/angular/components/slider/slider" target="_blank">スライダー</a>

### データグリッド

表形式でデータを表示するコンポーネントです。データの切り替わったタイミングで、前回より順位が上がった/下がった場合に、アイコンと背景色で装飾を行うことによってその状況を可視化しています。セルの値によってセルの内容やセルへのクラス付与を行う <a href="https://jp.infragistics.com/products/ignite-ui-angular/angular/components/grid/conditional-cell-styling" target="_balnk">条件付きセルのスタイル設定</a> の機能を利用しています。

### データチャート

さまざまなチャート表現を実現するためのコンポーネントです。２種類のチャートを重ねて実装しています。<a href="https://jp.infragistics.com/products/ignite-ui-angular/angular/components/data-chart-types-overview-line" target="_blank">折れ線チャート</a> を使ってチャートのライン部分を、<a href="https://jp.infragistics.com/products/ignite-ui-angular/angular/components/data-chart-types-overview-point" target="_blank">ポイントチャート</a> を使って、現在データの位置を表す円形の表現と対応する選手名の表示を行なっています。

### スライダー

つまみを操作するような形で指定した範囲のデータ値を切り替えることのできるコンポーネントです。このコンポーネントに時間軸のデータを年月の古い順に与え、数ミリ秒毎に次の時間軸に切り替えることによって、自動的にスライダーの値が変更される動作を実装しています。また、スライダーの値変更のイベントによって、対応する年月のデータでグリッドおよびチャートの表示を切り替える処理を行なっています。

#### ソースのダウンロード

以下よりソースコードをダウンロードいただけます。
<a href="https://kb.jp.infragistics.com/wp-content/uploads/2021/01/moving-chart.zip" target="_blank">サンプルをダウンロード</a>

## まとめ

このように、幾つかのコンポーネントを組み合わせることによって、より目を引くアニメーション表現を実装するといったことも可能になります。各 UI コンポーネントの従来の利用方法だけに囚われず、自由な発想で開発を行なっていただければと思います。コンポーネントの利用方法などのお問い合わせに関してもお気軽にご相談ください。

#### Ignite UI for Angular トライアル版を利用するには

Ignite UI for Angular はトライアル板での試用が可能です。
トライアル版を利用するためには <a href="https://iam.infragistics.com/Account/Register" target="_blank">こちらのページ</a> よりアカウントの作成を行ってください。登録より30日間、弊社のテクニカルサポートをご利用いただくことが出来ますのでお気軽にお問い合わせください。

Ignite UI for Angular を使用した作業の開始に関しましては <a href="https://jp.infragistics.com/products/ignite-ui-angular/angular/components/general/getting-started" target="_blank">こちらのドキュメント</a> をご参照ください。

また、製品をご購入をご検討のお客様は <a href="https://jp.infragistics.com/about-us/contact-us" target="_blank">こちらのページ</a> よりお気軽にお問い合わせください。そのほか、<a href="https://jp.infragistics.com/request-demo" target="_blank">製品デモ</a>や、弊社製品そのものに関するご相談だけでなく、システム開発における様々なご相談も実施可能な<a href="https://jp.infragistics.com/free-consultation" target="_blank">無料相談会</a>も随時受け付けています。