Pythonのグラフの塗りつぶしについて

Pythonグラフ,イメージ

AI実装検定のご案内

Pythonでグラフを「塗りつぶす」には、主に Matplotlib を使います。

ここではグラフの塗りつぶし方法について、基本から応用まで体系的に解説します。

目次

基本的な塗りつぶし:fill_between()

使いどころ

fill_between() は、2本の線に挟まれた領域を塗りつぶすのに使います。

たとえば「折れ線グラフとx軸の間の領域」など。

使い方の基本構文

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y = np.sin(x)

plt.plot(x, y, label='sin(x)')
plt.fill_between(x, y, color='skyblue', alpha=0.4)
plt.legend()
plt.show()

引数の解説

  • x: 横軸データ
  • y1: 下側の境界線(通常は曲線)
  • y2: 上側の境界線(省略可、デフォルトは0)
  • color: 塗りつぶし色
  • alpha: 透明度(0.0~1.0)

複数の線の間を塗る

y2 = np.cos(x)

plt.plot(x, y, label='sin(x)')
plt.plot(x, y2, label='cos(x)')
plt.fill_between(x, y, y2, where=(y > y2), color='red', alpha=0.3, label='sin > cos')
plt.fill_between(x, y, y2, where=(y < y2), color='blue', alpha=0.3, label='sin < cos')
plt.legend()
plt.show()

where の使い方

  • 条件に合う場所だけを塗り分けるのがポイント。
  • 条件を numpy の配列で指定。

グラフの上下を領域ごとに塗る(例:信頼区間)

mean = np.sin(x)
std = 0.2

plt.plot(x, mean, label='mean')
plt.fill_between(x, mean - std, mean + std, color='gray', alpha=0.2, label='±1σ')
plt.legend()
plt.show()

このように、平均 ± 標準偏差の範囲をビジュアル化できます。

条件に応じた色分け(マスク付きの塗りつぶし)

mask = y > 0
plt.plot(x, y, label='sin(x)')
plt.fill_between(x, y, where=mask, color='green', alpha=0.4, label='y > 0')
plt.fill_between(x, y, where=~mask, color='red', alpha=0.4, label='y < 0')
plt.legend()
plt.show()

これは「条件付きで色を変えて塗る」実践的なテクニックです。

極座標グラフで塗りつぶす

theta = np.linspace(0, 2 * np.pi, 100)
r = np.abs(np.sin(5 * theta))

fig = plt.figure()
ax = fig.add_subplot(111, polar=True)
ax.plot(theta, r)
ax.fill(theta, r, color='purple', alpha=0.5)
plt.show()

ax.fill() を使えば、極座標でも綺麗に塗りつぶせます。

fill() で多角形を塗りつぶす

x = [1, 2, 3, 2]
y = [1, 3, 1, -1]

plt.fill(x, y, color='orange', alpha=0.6)
plt.grid()
plt.show()

fill() は、任意の形状(ポリゴン)を作って塗るのに使います。

棒グラフやエリアチャート風の表現にも使えます。

カラーマップ(色のグラデーション)との組み合わせ

import matplotlib.cm as cm

y = np.sin(x)
colors = cm.viridis((y - y.min()) / (y.max() - y.min()))

for i in range(len(x) - 1):
    plt.fill_between(x[i:i+2], y[i:i+2], color=colors[i], alpha=0.8)

plt.plot(x, y, color='black')
plt.show()

このように colormap を使って色にグラデーションをつけると、よりインパクトのあるビジュアライゼーションができます。

Seabornとの違い

Seaborn でも fill_between に類似のことができますが、基本的には内部で matplotlib を使っています。

Seabornは抽象化されていて、sns.lineplot()sns.tsplot()CI(信頼区間) を自動で塗る程度です。

まとめ

Pythonと勉強,イメージ
メソッド目的備考
fill_between()線と線の間を塗るグラフのエリアを明示
fill()任意の形状を塗る多角形や図形を描画
ax.fill() (極座標)極座標での塗りpolar=True
alpha透明度調整視認性を向上
where条件付き塗り分け状態変化を強調
color / cmap色やグラデ意味付けしやすい

補足:インタラクティブ表示

Jupyter Notebook などで視覚的に調整したい場合は ipywidgetsplotly のようなライブラリと組み合わせると、動的な塗り分けも可能です。

以上、Pythonのグラフの塗りつぶしについてでした。

最後までお読みいただき、ありがとうございました。

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