積み上げ棒グラフの見方と描画方法 (Python)

本記事では、積み上げ棒グラフの見方とPythonによるその描画方法について解説していきます。

目次

使いどころ

積み上げ棒グラフは、ある項目ごとの累計データに対して、その内訳を比較したい場合に有効です。複数の項目を一つの棒グラフで表現できるので、比較対象が複数項目ある場合に使いましょう。例えば、都道府県別に男女の人口比を見たい場合などには有効な可視化手法です。

他にも、時系列で内訳の推移を可視化したい場合にもこの積み上げ棒グラフは有効です。例えば、月毎にテーマパークの男女別の来場者数を見たい場合や、年毎に男女別の人口を見たい場合などは積み上げ棒グラフは可視化手法として有効です。

このように横軸の取り方で積み上げ棒グラフはさまざまな使い方ができるのでぜひ活用してみましょう。

描画方法

matplotlibを使用して積み上げ棒グラフを描画する場合は、bar()メソッドを使用します。引数のbottomに積み上げる値を渡すと積み上げグラフを描画することができます。

df = pd.read_csv("/content/drive/MyDrive/Colab Notebooks/c02.csv", encoding="shift-jis")
df = df.dropna()
year = total_population_df["西暦(年)"].astype(int).astype(str).reset_index(drop=True)
male_population = total_population_df["人口(男)"]
female_population = total_population_df["人口(女)"]

fig, ax = plt.subplots(figsize=(15, 5))
width = 0.5 # 棒グラフの幅を指定
ax.bar(year, male_population, width=width)
ax.bar(year, female_population, bottom=male_population, width=width)
ax.yaxis.set_major_formatter(ScalarFormatter(useMathText=True))
ax.set_xlabel("西暦(年)")
ax.set_ylabel("人口(人)")
ax.legend(["男", "女"])
width = ax.patches[0].get_width()
stacks = len(ax.patches) // len(year)

# 区分線の描画
for i in range(stacks):
    for j in range(0, len(year) - 1):
        h0 = np.sum([ax.patches[j + len(year) * k].get_height() for k in range(0, i + 1)])
        h1 = np.sum([ax.patches[j + 1 + len(year) * k].get_height() for k in range(0, i + 1)])
        ax.plot([j + width / 2, j + 1 - width / 2], [h0, h1], color='C7', ls='--', zorder=1)

plt.show()

上記のプログラムを実行すると、下図のようなグラフが描画されます。

グラフの読み取り方

横軸としては、時間などの連続的に変化する値をとり、縦軸にその変化に伴い増減する値を取ります。ここでは、横軸に年、縦軸に男女別の人口をとるグラフを描画しています。積み上げ棒グラフでは、各要素と全体に注目しましょう。上図のグラフを見ると、1995年以降は、男女ともに横ばいになっていることがわかります。また、1945〜1950年にかけて、男女ともに大きく人口が増加していることが確認できます。このように、積み上げ棒グラフでは、各要素ごとの値の推移を確認することができます。

まとめ

本記事では、積み上げ棒グラフの見方及びその描画方法について紹介しました。積み上げ棒グラフでは、各要素ごとの時間推移などを見たい場合に有効な描画方法です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次