以前グラフの線をグラデーションにしたい、という記事を書いた。今回は領域をグラデーションで塗りつぶしたくなった。
結局fill_betweenをfor文で繰り返して塗りつぶすのがいいらしい。ただこれだとx方向のグラデーションしかできないのでy方向や斜めはもうちょっと調べてみます
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()
他の方法でやろうとしたものもあります。