0
我正在處理一個圖表,這個小小的問題。我想填寫2半垂直線之間的區域,如下所示(藍綠色和灰色的): fill_between()不工作
然而,當我使用下面的代碼,我不`噸得到任何東西:
plt.fill_between(x, y_1, y_2, facecolor = 'red')
我在做什麼錯了?
此致 Greem
我正在處理一個圖表,這個小小的問題。我想填寫2半垂直線之間的區域,如下所示(藍綠色和灰色的): fill_between()不工作
然而,當我使用下面的代碼,我不`噸得到任何東西:
plt.fill_between(x, y_1, y_2, facecolor = 'red')
我在做什麼錯了?
此致 Greem
兩條線的x變量的數據範圍是完全獨立的,所以沒有即使在其中填充可在y方向上進行的單點。
您可能想要填寫x方向,而可以使用fill_betweenx
來完成。問題是現在兩條線的y值是不同的。因此需要對它們進行插值,使得fill_betweenx
可以對兩個曲線之間的填充使用相同的y值,對於不同的x值,最初具有不同的y值。
import numpy as np
import matplotlib.pyplot as plt
x1 = np.array([1.00, 1.20, 1.30, 1.55, 1.60])
x2 = np.array([1.82, 1.91, 2.14, 2.26, 2.34])
y1 = np.array([1.03, 1.20, 1.28, 1.42, 1.71])
y2 = np.array([0.90, 1.10, 1.31, 1.42, 1.58])
fig, ax= plt.subplots()
ax.plot(x1,y1, color="indigo")
ax.plot(x2,y2, color="crimson")
yi = np.sort(np.c_[y1,y2].flatten())
x1i = np.interp(yi, y1, x1)
x2i = np.interp(yi, y2, x2)
ax.fill_betweenx(yi, x1i, x2i, color="lemonchiffon")
plt.show()
替代到上述溶液中可以是繪製polgon,與兩條線路作爲它的邊緣點的座標。
import numpy as np
import matplotlib.pyplot as plt
x1 = np.array([1.00, 1.20, 1.30, 1.55, 1.60])
x2 = np.array([1.82, 1.91, 2.14, 2.26, 2.34])
y1 = np.array([1.03, 1.20, 1.28, 1.42, 1.71])
y2 = np.array([0.90, 1.10, 1.31, 1.42, 1.58])
fig, ax= plt.subplots()
ax.plot(x1,y1, color="indigo")
ax.plot(x2,y2, color="crimson")
x = np.append(x1,x2[::-1])
y = np.append(y1,y2[::-1])
p = plt.Polygon(np.c_[x,y], color="lemonchiffon")
ax.add_patch(p)
plt.show()
'如果兩個'y's有效fill_between'工作,因此這兩個'y'值之間填埋。 –
嘗試在代碼中添加'interpolate = True'元素。 – saul
您也可以嘗試[fill_betweenx](http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.fill_betweenx),如[此處]所述(https://stackoverflow.com/a/15589909/2454357) –