【Matplotlib】積み上げ面グラフを表示する方法 (stackplot)

積み上げ面グラフは基本的な面グラフを拡張したものです

各グループの値が重なって表示されるので,数値の合計と変化を同じグラフ上で確認することができます

PythonのMatplotlibで積み上げ面グラフを表示する方法を解説します

本記事では,ThemeRiverやストリームグラフの表示方法についても解説しています

基本的な面グラフに関しては下記記事を参考にしてください

目次

基本的な積み上げ面グラフ (Axes.stackplot)

積み上げ面グラフはstackplot関数を使って描画します

Axes.stackplot
引数
  • x (配列) : 1次元の配列データ
  • y (配列) : 2次元の配列データ.行がグループの数,列がxと同じ要素数になります
  • labels (文字列の配列) : yの行数と同じ要素数のラベル文字列の配列
  • baseline (文字列) : ‘zero’, ‘sym’, ‘wiggle’, ‘weighted_wiggle’のいずれかを指定することで,面グラフの形式を変更できます
  • colors (色の配列) : yの行数と同じ要素数の色の配列
返値
公式ドキュメント

下記のタブにコードとフローチャートの解説をしています

import matplotlib.pyplot as plt
import numpy as np

# step1 データの作成
x = np.linspace(0, 10, 100)
dict_y = {
    'y1': x**1.5,
    'y2': x**2,
    'y3': x**2.1,
    'y4': np.exp(0.4*x),
    'y5': np.exp(0.4*x)+np.sin(x),
}
# step2 グラフフレームの作成
fig, ax = plt.subplots()
# step3 積み上げ面グラフの描画
ax.stackplot(x, dict_y.values(), labels=dict_y.keys())

ax.set_xlabel('X label')
ax.set_ylabel('Y label')
ax.legend(loc='upper left')
ax.set_title('Simple Stackplot')

plt.show()

ゼロを中心に対称なThemeRiver (sym)

stackplot関数の引数をbaseline=symとすると,ゼロを中心に対称な積み上げ面グラフを描画できます

英語ではThemeRiverと呼ばれ,川の比喩を用いた可視化方法です

ax.axhlineはグラフ内に直線を表示しています

# step3 積み上げ面グラフの描画
ax.stackplot(x, dict_y.values(), labels=dict_y.keys(), baseline='sym')
ax.axhline(0, color='black', ls='--')

層の揺れを最小にしたストリームグラフ (wiggle)

stackplot関数の引数をbaseline=wiggleとすると,ストリームグラフが描画されます

ストリームグラフは中心軸を軸として層の「揺れ」が最小になるように配置されます

値の比較作業において,基本的な積み上げ面グラフやThemeRiverよりも読みやすいといわれています

# step3 積み上げ面グラフの描画
ax.stackplot(x, dict_y.values(), labels=dict_y.keys(), baseline='wiggle')
ax.axhline(0, color='black', ls='--')

各グループの色の設定 (colors)

stackplot関数の引数でcolorsを指定すると,各グループの色を設定できます

この記事では,データ数が5要素なので,5つの色の名前を入力したリストを定義しました

Matplotlibで可能な色設定は下記を参考にしてください

# step3 積み上げ面グラフの描画
colors = ['forestgreen', 'limegreen', 'aquamarine', 'cyan', 'skyblue']
ax.stackplot(x, dict_y.values(), labels=dict_y.keys(), colors=colors)

参考文献

領域を塗りつぶした面グラフ

積み上げ面グラフとストリームグラフ

stackplot関数

お疲れ様でした

シェアしてくださると嬉しいです!
  • URLをコピーしました!

コメント

コメントする

目次