簡體   English   中英

fill_between()不起作用

[英]fill_between() doesn`t work

我正在處理的圖表存在這個小問題。 我想填充兩條半垂直線之間的區域,如下所示(青色和灰色): 在此處輸入圖片說明

但是,當我使用以下代碼時,我什么也沒得到:

plt.fill_between(x, y_1, y_2, facecolor = 'red')

我究竟做錯了什么?

親切的問候,格雷姆

這兩行的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()

在此處輸入圖片說明

上述解決方案的替代方法是繪制一條以兩條線的坐標為其邊緣點的多邊形。

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()

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM