matplotlib.pyplot: 線グラフの特定領域を塗りつぶす

ヒトデちゃん

化学反応速度に関するグラフがあるんですが、pythonを使って指定範囲を塗りつぶしたいです。どうすれば良いでしょう?

ワカメさん

matplotlibのpyplot.fill_between()を使えば、指定の範囲を塗りつぶせます。

特定領域の塗りつぶし

ヒトデちゃん

ひとまず、0~5minの範囲に限定して、下図のようなグラフが書きたいんです。

Figure1. 化学反応速度式: 0~5minの塗りつぶし

Figure1は以下のコードから描けます。

12行目のfill_between()where=()が塗りつぶしの範囲を決めます。

whereに何も記述しなければ、\(0\leq t \leq 30, \quad y\leq a\cdot exp(dt)\)が塗りつぶされます。

plt.fill_between(t, conc, 3, where=((1 <=t)&(t<=5))と記述すれば、\(1\leq t \leq 5, \quad 3 \leq y\leq a\cdot exp(dt)\)が塗りつぶされます。

ワカメさん

focecolorが塗りつぶしの色、alphaが透明度を調整します。

塗りつぶすカラーは、簡単なものであれば、{'b', 'g', 'r', 'c', 'm', 'y', 'k', 'w'}で指定できます。

それぞれの文字は、blue, green, red, cyan, magenta, yellow, black, whiteを指定します。

ヒトデちゃん

それぞれの色の頭文字のようですが、blackはblueとかぶるから”k”なんですね!

ワカメさん

パワポ、エクセルで編集もいいですが、個人的には慣れるとpythonで書いてしまうほうが速いです。使い慣れてください!

この記事は以上です。

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

参考ページ

(1) matplotlib ver3.1.2, “Filling the area between lines”(7/20/2021アクセス)

(2) matplotlib ver3.1.2, “matplotlib.pyplot.annotate”(7/20/2021アクセス)

(3) matplotlib ver3.4.2, “matplotlib.colors”(7/20/2021アクセス)

スポンサーリンク

この記事が気にいったらシェアしてね!