先日グラフの積分によって求められる面積に色をつけたいと考えた時に使用した関数が便利だったのでメモします。
#matplotlib.pyplot.fill_between#
matplotlib.pyplot.fill_between(x, y1, y2=0, where=None, interpolate=False, step=None, \*, data=None, **kwargs)
今回私が使った関数はこれです。
今回私はグラフの下を塗りつぶしたかっただけなので使用するのは
matplotlib.pyplot.fill_between(x, y1, color='color',alpha=(float))
のみのパラメータです。
基本的なplotと同じように最初の2つはx軸とy軸のデータを入れます
そして**kwargsで指定できる他のパラメータからcolor='色'と、alpha='透過度'で指定しています。
#実装#
実装して見ました
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-10,10,100)
y = -0.1*(x**2)+10
plt.plot(x,y,'blue')
plt.fill_between(x,y,color='blue',alpha=0.1)
plt.show()
こんな感じです。
もし二つの曲線に挟まれたエリアを塗りつぶしたいならy2の値を入れればいいので
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-10,10,100)
y = -0.1*(x**2)+10
y2 = 0.05*(x**2)+1
plt.plot(x,y,'blue')
plt.plot(x,y2,'red')
plt.fill_between(x,y,y2,where = y>y2,color='blue',alpha=0.1)
plt.show()
~
となります。ここでwhereを使っていますが、これは適応する場所を選択するようでboolで指定するようです。
これによって赤線と青線で囲まれた場所(青線>赤線)のみ場所だけに適応しています。
余談ーーー
これとは別に図形を塗りたいならfill関数を使うのがいいみたいです。
import matplotlib.pyplot as plt
x = [-1,0,1,0]
y = [0,-1,0,1]
plt.fill(x,y,color='blue',alpha=0.1)
plt.show()
ーーーーー
#終わりに#
もしかしたらこの程度は常識かもしれませんが個人的に便利だと思いました。
小さなことをコツコツアウトプットすることも大事かと思うのでこういうものも書いていこうかと思います。
##[参考]##
http://cranethree.hatenablog.com/entry/2015/07/25/204608 matplotlibで領域の図示
https://matplotlib.org/api/_as_gen/matplotlib.pyplot.fill_between.html matplotlib公式
https://sabopy.com/py/matplotlib-28/ [matplotlibの使い方] 28. 折れ線グラフの下を塗りつぶしたグラフ