帯グラフ(積み上げ横棒グラフ)を表示するPythonコード

データから帯グラフをPythonで出力してみよう。

Pythonコード

matplotlib.pyplotbarh()関数(積み上げ横棒グラフ)を利用して, 帯グラフを出力する。

barh()の引数には, 棒の縦位置, 棒の横幅, 棒の左端位置を指定する。

barh(y, width, left=stat_x)の場合,
yで縦方向に並べる棒を0番目から順番に指定,
widthで棒の(水平方向の)長さを指定,
leftで棒のスタート位置(左側)を設定する。

入力例. regionsごとにteenからfifty_plusまでのデータを横に並べた帯グラフを表示する。

import matplotlib.pyplot as plt
import numpy as np
import japanize_matplotlib

# データ
regions = ["東京", "大阪", "名古屋", "福岡"]
teen = [15, 10, 12, 18]
twenty = [25, 30, 28, 22]
thirty = [30, 25, 27, 25]
forty = [20, 25, 23, 20]
fifty_plus = [10, 10, 10, 15]

# 帯グラフの設定・描画
y = np.arange(len(regions))
plt.barh(y, teen, color="#FF9999", label="10代")
plt.barh(y, twenty, left=teen, color="#FFCC99", label="20代")
plt.barh(y, thirty, left=np.array(teen)+np.array(twenty), color="#99CC99", label="30代")
plt.barh(y, forty, left=np.array(teen)+np.array(twenty)+np.array(thirty), color="#66CCCC", label="40代")
plt.barh(y, fifty_plus, left=np.array(teen)+np.array(twenty)+np.array(thirty)+np.array(forty), color="#9999CC", label="50代以上")

plt.yticks(y, regions)
plt.xlabel("割合(%)")
plt.title("地域別 年代構成(帯グラフ)")
plt.legend()
plt.show()

y = np.arange(len(regions))regionsの地域に, 0番から3番までの番号を振り分ける。(小さい数字の地域から順番に上に帯を置いていく。)

plt.barh()の引数については, たとえば, plt.barh(y, thirty, left=np.array(teen)+np.array(twenty), color="#99CC99", label="30代")では, 各地域の番号(y)ごとに30代の構成人数(thirty)の各値を長さとする棒を表示する。この棒は10代と20代の棒の右に設置する必要があるので, np.array(teen)+np.array(twenty)の各値の分だけ左にずらして(left), 棒を配置すればよい。

matplotlibで日本語を利用する場合japanize_matplotlibを使う。必要であれば、次を行い事前にインストールしておく。

pip install japanize-matplotlib

コメントを残す