Построение линий с диапазонами в направлении x и y

#python #matplotlib #data-visualization

Вопрос:

Я пытаюсь построить несколько различных линий, используя уравнения:

 def upper_line(a, b, c, d, x_bhighlim, x_thighlim):
    x = np.linspace(x_bhighlim, x_thighlim, 100)
    y = (a)   (b*x)   (c*(x**2))   (d*(x**3))
    return x, y

def lower_line(a, b, c, d, x_blowlim, x_tlowlim):
    x = np.linspace(x_blowlim, x_tlowlim, 100)
    y = (a)   (b*x)   (c*(x**2))   (d*(x**3))
    return x, y
 

проблема в том, что эти линии имеют диапазоны x и y, по которым они жизнеспособны. Диапазоны x, в которых они жизнеспособны, применяются при определении x. Как я могу реализовать диапазоны y, сохраняя при этом len(x) == len(y) и размеры x равными размерам y. Моя мысль состоит в том, чтобы сделать что-то вроде:

 def lower_line(a, b, c, d, x_blowlim, x_tlowlim, y_blowlim, y_tlowlim):
    x = np.linspace(x_blowlim, x_tlowlim, 100)
    yfull = (a)   (b*x)   (c*(x**2))   (d*(x**3))
    y = np.where((y_blowlim < yfull) amp; (yfull < y_tlowlim))
    return x, y
 

Но это не может построить график (y имеет размеры (1, 99), x имеет размеры (100,)), и это не возвращает значения y, которые имеют для меня смысл.

Кроме того, у меня есть много разных значений a, b, c и d, поэтому я строю графики на основе функции.

Для воспроизводства я приведу примеры значений для строчной строки:

 a = 0.029
b = 1.320
c = -0.712
d = 1.472
x_blowlim = -0.45 
x_tlowlim = 0.29
y_blowlim = -0.90
y_tlowlim = 0.38