はじめに
Matplotlib は Python のデータ可視化ライブラリです。複雑でカスタマイズ可能なプロット、チャート、グラフを作成するための幅広いツールを提供します。Matplotlib が提供する最も便利なツールの 1 つは、fill_betweenx関数です。この関数は、2 つの水平曲線の間の領域を塗りつぶすために使用されます。このチュートリアルでは、fill_betweenx関数を調べ、さまざまな種類のプロットを作成する方法を学びます。
VM のヒント
VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習しましょう。
Jupyter Notebook の読み込みには数秒かかる場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。
学習中に問題がある場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。
シンプルな fill_betweenx のプロット作成
このステップでは、fill_betweenx 関数を使ってシンプルなプロットを作成する方法を学びます。2 つの曲線の間の領域を塗りつぶします。
import matplotlib.pyplot as plt
import numpy as np
y = np.arange(0.0, 2, 0.01)
x1 = np.sin(2 * np.pi * y)
x2 = 1.2 * np.sin(4 * np.pi * y)
fig, ax = plt.subplots(figsize=(6, 6))
ax.fill_betweenx(y, x1, x2, color='green', alpha=0.5)
ax.plot(x1, y, color='blue')
ax.plot(x2, y, color='red')
plt.show()
複数のサブプロットの作成
このステップでは、複数のサブプロットを作成し、各サブプロット内の 2 つの水平曲線の間の領域を塗りつぶすために fill_betweenx 関数を使う方法を学びます。
import matplotlib.pyplot as plt
import numpy as np
y = np.arange(0.0, 2, 0.01)
x1 = np.sin(2 * np.pi * y)
x2 = 1.2 * np.sin(4 * np.pi * y)
fig, [ax1, ax2, ax3] = plt.subplots(1, 3, sharey=True, figsize=(12, 4))
ax1.fill_betweenx(y, 0, x1, color='green', alpha=0.5)
ax1.plot(x1, y, color='blue')
ax1.set_title('Fill between (x1, 0)')
ax2.fill_betweenx(y, x1, 1, color='red', alpha=0.5)
ax2.plot(x1, y, color='blue')
ax2.set_title('Fill between (x1, 1)')
ax3.fill_betweenx(y, x1, x2, color='orange', alpha=0.5)
ax3.plot(x1, y, color='blue')
ax3.plot(x2, y, color='red')
ax3.set_title('Fill between (x1, x2)')
plt.show()
論理条件の使用
このステップでは、2 つの水平曲線の間の領域を塗りつぶすために論理条件をどのように使用するかを学びます。
import matplotlib.pyplot as plt
import numpy as np
y = np.arange(0.0, 2, 0.01)
x1 = np.sin(2 * np.pi * y)
x2 = 1.2 * np.sin(4 * np.pi * y)
fig, ax = plt.subplots(figsize=(6, 6))
ax.plot(x1, y, color='black')
ax.plot(x2, y, color='black')
ax.fill_betweenx(y, x1, x2, where=x2 >= x1, facecolor='green', alpha=0.5)
ax.fill_betweenx(y, x1, x2, where=x2 <= x1, facecolor='red', alpha=0.5)
plt.show()
マスク付き配列の使用
このステップでは、2 つの水平曲線の間の領域を塗りつぶすためにマスク付き配列をどのように使用するかを学びます。
import matplotlib.pyplot as plt
import numpy as np
y = np.arange(0.0, 2, 0.01)
x1 = np.sin(2 * np.pi * y)
x2 = 1.2 * np.sin(4 * np.pi * y)
x2 = np.ma.masked_greater(x2, 1.0)
fig, ax = plt.subplots(figsize=(6, 6))
ax.plot(x1, y, color='black')
ax.plot(x2, y, color='black')
ax.fill_betweenx(y, x1, x2, where=x2 >= x1, facecolor='green', alpha=0.5)
ax.fill_betweenx(y, x1, x2, where=x2 <= x1, facecolor='red', alpha=0.5)
plt.show()
まとめ
このチュートリアルでは、Matplotlib のfill_betweenx関数を使って 2 つの水平曲線の間の領域を塗りつぶす方法を学びました。また、複数のサブプロットを作成し、論理条件やマスク付き配列を使って異なる種類のプロットを作成する方法も学びました。fill_betweenx関数を使うことで、Python で複雑でカスタマイズ可能なプロットを作成できます。