LoginSignup
2
0

More than 3 years have passed since last update.

matplotlib.pyplot で積分区間をに色をつける

Posted at

先日グラフの積分によって求められる面積に色をつけたいと考えた時に使用した関数が便利だったのでメモします。

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='透過度'で指定しています。

実装

実装して見ました

ex_fill_between.py
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()


結果
スクリーンショット 2020-09-17 22.15.05.png

こんな感じです。
もし二つの曲線に挟まれたエリアを塗りつぶしたいならy2の値を入れればいいので

ex_fill_between2.py
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()
~              

結果
スクリーンショット 2020-09-17 22.28.59.png

となります。ここでwhereを使っていますが、これは適応する場所を選択するようでboolで指定するようです。
これによって赤線と青線で囲まれた場所(青線>赤線)のみ場所だけに適応しています。

余談ーーー
これとは別に図形を塗りたいならfill関数を使うのがいいみたいです。

ex_fill.py
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()

結果
スクリーンショット 2020-09-17 22.36.28.png

ーーーーー

終わりに

もしかしたらこの程度は常識かもしれませんが個人的に便利だと思いました。
小さなことをコツコツアウトプットすることも大事かと思うのでこういうものも書いていこうかと思います。

[参考]

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. 折れ線グラフの下を塗りつぶしたグラフ

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0