Pynote

Python、機械学習、画像処理について

matplotlib - stackplot で積み上げ折れ線グラフを作成する方法について

概要

matplotlib で積み上げ折れ線グラフを作成する方法について紹介する。

関連

pyplot.stackplot(x, *args, data=None, **kwargs)

基本的な使い方

args = y1, y2, y3 または args=[y1, y2, y3] のどちらでもよい。

import numpy as np
import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y1 = [1, 1, 2, 3, 5]
y2 = [0, 4, 2, 6, 8]
y3 = [1, 3, 5, 7, 9]
y = np.vstack([y1, y2, y3])
labels = ['Fibonacci ', 'Evens', 'Odds']

fig, ax = plt.subplots()
ax.stackplot(x, y1, y2, y3, labels=labels)
ax.legend(loc='upper left')

fig, ax = plt.subplots()
ax.stackplot(x, y, labels=labels)
ax.legend(loc='upper left')

plt.show()


積み上げる際の起点を設定する。

fig = plt.figure(figsize=(8, 8))

params = ['zero', 'sym', 'wiggle', 'weighted_wiggle']
for i, p in enumerate(params, 1):
    ax = fig.add_subplot(2, 2, i)
    ax.stackplot(x, y1, y2, y3, labels=labels, baseline=p)
    # タイトルを設定する。
    s = "'{}'".format(p) if isinstance(p, str) else p
    ax.set_title("baseline={}".format(s))

plt.show()


色を設定する。

fig, ax = plt.subplots()
ax.stackplot(x, y1, y2, y3, colors=['r', 'b', 'g'])

plt.show()