【matplotlib】グラフの範囲をグラデーションで塗りつぶしたい【python】

以前グラフの線をグラデーションにしたい、という記事を書いた。今回は領域をグラデーションで塗りつぶしたくなった。

結局fill_betweenをfor文で繰り返して塗りつぶすのがいいらしい。ただこれだとx方向のグラデーションしかできないのでy方向や斜めはもうちょっと調べてみます

chemstat.hatenablog.com

 

 

import matplotlib.pyplot as plt
import numpy as np

##グラフの作成
fig, ax = plt.subplots()

#x,yの定義
x = np.linspace(0, 2 * np.pi, 1000)
y1 = np.sin(x)  #y1:sin関数
y2 = np.zeros_like(x)  #y2:0

#y1,y2,y3の線をプロット
ax.plot(x, y1, color='black')
ax.plot(x, y2, color='black')

#for文で塗りつぶす
for i in range(len(x) - 1):
    ax.fill_between(x[i:i+2],#塗りつぶしを行うxの範囲
                    y1[i:i+2],#yの塗りつぶしの片側1
                    y2[i:i+2], #yの塗りつぶしの片側2
                    color=(i/len(x),  i/len(x),  i/len(x), 1), #(R,G,B,透明度)
                    lw=1)

plt.show()

他の方法でやろうとしたものもあります。

chemstat.hatenablog.com