はじめに
この実験では、Matplotlib のテーブル関数を使ってグラフ内にテーブルを表示する方法を学びます。異なる自然災害による損失を年間で可視化するために、サンプルデータセットを使います。
VM のヒント
VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習します。
時々、Jupyter Notebook が読み込み終わるまで数秒待つ必要があります。Jupyter Notebook の制限により、操作の検証は自動化できません。
学習中に問題がある場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。
必要なライブラリをインポートする
まず、このプロジェクトに必要なライブラリをインポートします。Matplotlib ライブラリを使ってテーブルを作成します。
import matplotlib.pyplot as plt
import numpy as np
データセットを作成する
次に、異なる自然災害による損失を年間で可視化するためのサンプルデータセットを作成します。データを格納するために二次元リストと、列名を格納するためにタプルを使います。
data = [[ 66386, 174296, 75131, 577908, 32015],
[ 58230, 381139, 78045, 99308, 160454],
[ 89135, 80552, 152558, 497981, 603535],
[ 78415, 81858, 150656, 193263, 69638],
[139361, 331509, 343164, 781380, 52269]]
columns = ('Freeze', 'Wind', 'Flood', 'Quake', 'Hail')
行ラベルを作成する
損失が記録された年数を表すために、データセットの行ラベルを作成します。行ラベルを作成するためにリスト内包表記を使います。
rows = ['%d year' % x for x in (100, 50, 20, 10, 5)]
カラースキームを作成する
plt.cm.BuPu関数を使って、テーブル用のカラースキームを作成します。行には薄い青色と紫色のパステル色を使います。
colors = plt.cm.BuPu(np.linspace(0, 0.5, len(rows)))
縦積み棒グラフを作成する
異なる自然災害による損失を年間で表すために、plt.bar関数を使って縦積み棒グラフを作成します。データの各行を反復処理するために for ループを使い、棒グラフを描画します。
n_rows = len(data)
index = np.arange(len(columns)) + 0.3
bar_width = 0.4
y_offset = np.zeros(len(columns))
cell_text = []
for row in range(n_rows):
plt.bar(index, data[row], bar_width, bottom=y_offset, color=colors[row])
y_offset = y_offset + data[row]
cell_text.append(['%1.1f' % (x / 1000.0) for x in y_offset])
色とテキストラベルを反転させる
[::-1]関数を使って、表の色とテキストラベルを反転させ、一番上に最後の値を表示します。
colors = colors[::-1]
cell_text.reverse()
グラフにテーブルを追加する
plt.table関数を使って、グラフの下部にテーブルを追加します。セルのテキスト、行ラベル、行の色、列ラベルをパラメータとして関数に渡します。
the_table = plt.table(cellText=cell_text,
rowLabels=rows,
rowColours=colors,
colLabels=columns,
loc='bottom')
グラフのレイアウトを調整する
plt.subplots_adjust関数を使って、グラフのレイアウトを調整して、テーブル用のスペースを確保します。
plt.subplots_adjust(left=0.2, bottom=0.2)
軸ラベルとタイトルを追加する
plt.ylabel、plt.yticks、plt.xticks、およびplt.title関数を使って、グラフに軸ラベルとタイトルを追加します。
values = np.arange(0, 2500, 500)
value_increment = 1000
plt.ylabel(f"Loss in ${value_increment}'s")
plt.yticks(values * value_increment, ['%d' % val for val in values])
plt.xticks([])
plt.title('Loss by Disaster')
グラフを表示する
plt.show関数を使って、グラフを表示します。
plt.show()
まとめ
この実験では、Matplotlib のテーブル関数を使ってグラフ内にテーブルを表示する方法を学びました。異なる自然災害による損失を年間で可視化するためにサンプルデータセットを使用しました。以下の手順に従いました。
- 必要なライブラリをインポート
- データセットを作成
- 行ラベルを作成
- 配色を作成
- 縦積み棒グラフを作成
- 色とテキストラベルを反転
- グラフにテーブルを追加
- グラフのレイアウトを調整
- 軸ラベルとタイトルを追加
- グラフを表示