積み上げ面グラフは基本的な面グラフを拡張したものです
各グループの値が重なって表示されるので,数値の合計と変化を同じグラフ上で確認することができます
PythonのMatplotlibで積み上げ面グラフを表示する方法を解説します
本記事では,ThemeRiverやストリームグラフの表示方法についても解説しています
基本的な面グラフに関しては下記記事を参考にしてください
【Matplotlib】領域を塗りつぶした面グラフを表示する方法 (fill_between, fill_betweenx)
PythonのMatplotlibでグラフを表示するときに,グラフの領域を塗りつぶしたいと思ったことはないでしょうか? 範囲を示したい場合や誤差範囲を表現したい場合などによく…
目次
基本的な積み上げ面グラフ (Axes.stackplot)
積み上げ面グラフはstackplot関数を使って描画します
Axes.stackplot
- 引数
- 返値
-
- PolyCollectionのリスト
- 公式ドキュメント
下記のタブにコードとフローチャートの解説をしています
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と呼ばれ,川の比喩を用いた可視化方法です
# step3 積み上げ面グラフの描画
ax.stackplot(x, dict_y.values(), labels=dict_y.keys(), baseline='sym')
ax.axhline(0, color='black', ls='--')
【Matplotlib】直線や帯線を表示する方法 (hlines, vlines, axhline, axvline, axline, axhspan, axvspan)
直線や帯線をグラフに表示する方法に悩んでいませんか?特定のデータ点や範囲を強調したい場合,適切な手法で直線や帯線をプロットすることが重要です PythonのMatplotl…
層の揺れを最小にしたストリームグラフ (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)
参考文献
領域を塗りつぶした面グラフ
【Matplotlib】領域を塗りつぶした面グラフを表示する方法 (fill_between, fill_betweenx)
PythonのMatplotlibでグラフを表示するときに,グラフの領域を塗りつぶしたいと思ったことはないでしょうか? 範囲を示したい場合や誤差範囲を表現したい場合などによく…
積み上げ面グラフとストリームグラフ
stackplot関数
お疲れ様でした
コメント