AWS Cloud9で動く棒グラフを作成してみた

こんにちは。マーケティング部の浅見です。

「動く棒グラフを作ってみたい!」
と思い立ち、Cloud9上のPythonで作成してみたので、その記録を残しておきます。
カンタンなので、気になるデータがあるかたは是非チャレンジしてみてください。

主なポイントは次通りです。

  • Cloud9のインスタンスタイプは「C系」のコア数多めが良さそう
  • Cloud9のタイムアウト設定には気を付けよう
  • 動画のダウンロードはS3経由で

動く棒グラフとは?

文字で説明するよりも実際に見てもらったほうが早そうなので、こちらをどうぞ。

ぬるぬる動いていい感じですね。時系列の変化を見るのに一役買ってくれそうです。

Cloud9 の作成

では作成していきましょう。まずはCloud9の作成を行います。

基本的にはデフォルトのままOKですが、動画作成時間に直結するインスタンスタイプは変更しておきましょう。あわせてタイムアウト設定も適宜修正してください。

今回は下記の設定で作成しています。

  • OS:AmazonLinux2
  • インスタンスタイプ:c5.large
  • タイムアウト:30分

インスタンスタイプは「c系」がおススメです。
動作作成には結構な時間がかかるので、CPUつよつよの「C系」がおすすめです。「T系」にしてしまうと、制限がかかって永遠終わらなくなります。1つの動画作成でも、複数コアでいい感じに並列処理してくれるようなので、コア数を増やすと作成時間が短縮されます。早く作成したい場合は高めのスペックを選んでくださいね。

また、タイムアウト設定も必要に応じて修正してください。ものによっては、30分では作成が終わらずに強制終了することもあります。(ちょいちょい触っていればタイムアウトしないのですが、長いのでどうしても放置してそのままタイムアウトに何回かなりました、、、)

インスタンスの設定

Cloud9のターミナルから必要なライブラリのインストールをしていきます。

必要なPythonライブラリのインストール

Pythonの必要なライブラリをインストールしておきます。

sudo -i
pip install japanize-matplotlib bar_chart_race pandas

ffmpegのインストール

動画作成に「ffmpeg」が必要になるのでインストールを行います。依存するライブラリが複数あるので、まとめてインストールしていきます。

yum install -y fribidi-devel harfbuzz mesa-libEGL libGLEW

cd /usr/local/src/
wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/l/libass-0.13.4-6.el7.x86_64.rpm
rpm -ivh libass-0.13.4-6.el7.x86_64.rpm

wget http://mirror.centos.org/centos/7/os/x86_64/Packages/libva-1.8.3-1.el7.x86_64.rpm
rpm -ivh libva-1.8.3-1.el7.x86_64.rpm

rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm
yum install -y ffmpeg ffmpeg-devel

コーディング

下記Pythonファイルを作成して実行すると、sample.mp4が作成されると思います。

動く棒グラフをたった一行のソースで作成ができてしまうのが素敵です。

import pandas as pd
import bar_chart_race as bcr
import japanize_matplotlib

# サンプルデータ
df = pd.DataFrame({'あ': [1, 2, 3, 4, 5, 6],
                  'い': [5, 4, 3, 2, 1, 0],
                  'う': [0, 1, 2, 3, 4, 5]},
                  index=[1, 2, 3, 4, 5, 6])

# 動く棒グラフを作成
bcr.bar_chart_race(df, 'sample.mp4', n_bars=3, steps_per_period=1000, period_length=1000)

csvファイルを読み込みたい場合は、サンプルデータ作成部分を下記のように書き換えます。

# CSVファイルからデータ読み込み
df = pd.read_csv('sample.csv', index_col=0, encoding='utf-8-sig')

動画の確認

作成した動画を確認するためには、Cloud9上で直接確認するか、ローカルにダウンロードする必要があります。Cloud9では一定の容量を超えると直接閲覧できないようなので、ダウンロードして見るのが良いと思います。

しかしながら、Cloud9から直接ダウンロードしようとすると、非常に時間がかかります。よくよく調べてみると、Cloud9の帯域は0.1Mbpsに制限されているようです。

そのため、一旦Amazon S3へ退避させてからダウンロードすることで待ち時間なく確認ができます。S3へのコピーはCloud9のターミナルからAWS CLIを使って行いましょう。Amazon Linux2を使うと、初期設定不要でCLIが使えるので楽ちんです。

aws s3 cp sample.mp4 s3://your-bucket/

まとめ

今回は動く棒グラフをCloud9で作成してみました。

事前準備がちょっと面倒ですが、データさえあれば数行のプログラムで作成することが可能です。

気になるかたは是非お試ししてみてください。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA