Python 计算到下一个交点的两条曲线之间的面积

Python 计算到下一个交点的两条曲线之间的面积,python,pandas,matplotlib,integral,Python,Pandas,Matplotlib,Integral,我有两条相交几次的曲线。我不知道十字路口在哪里。我试图在不手动设置边界的情况下为两个交点之间的每个区域获取一个值 到目前为止,我计算了每条曲线的值,如果logifunc高于logifuncsoll,则用绿色绘制,如果logifunc低于logifuncsoll,则用红色绘制 E701077['logifuncsoll'] = 1811.7/ (1 + 769.67 * np.exp(-0.704566*(xsoll)))+14.5212 E701077['logifunc'] = 1847.28

我有两条相交几次的曲线。我不知道十字路口在哪里。我试图在不手动设置边界的情况下为两个交点之间的每个区域获取一个值

到目前为止,我计算了每条曲线的值,如果logifunc高于logifuncsoll,则用绿色绘制,如果logifunc低于logifuncsoll,则用红色绘制

E701077['logifuncsoll'] = 1811.7/ (1 + 769.67 * np.exp(-0.704566*(xsoll)))+14.5212
E701077['logifunc'] = 1847.28 / (1 + 312.09 * np.exp(-0.606454*(x701077)))-8.16471


plt.figure(dpi=300)
plt.plot(x701077, E701077['logifuncsoll'],'r',markersize=np.sqrt(1), label ="soll",color='red' )
plt.plot(x701077, E701077['logifunc'],'r',markersize=np.sqrt(1), label ="E701077",color='purple' )
plt.legend
fig, ax = plt.subplots(1, 1, sharex=True)
ax.plot(x701077, E701077['logifunc'],linewidth=1 , label='logifunc', color= 'purple')
ax.plot(x701077, E701077['logifuncsoll'],linewidth=1, label='logifuncsoll', color='black') 
ax.fill_between(x701077, E701077['logifuncsoll'], E701077['logifunc'], where=E701077['logifunc'] >= E701077['logifuncsoll'], facecolor='green', interpolate=True)
ax.fill_between(x701077, E701077['logifuncsoll'], E701077['logifunc'], where=E701077['logifunc'] <= E701077['logifuncsoll'], facecolor='red', interpolate=True)
ax.legend(loc='upper left', frameon=False)
E701077['logifuncsoll']=1811.7/(1+769.67*np.exp(-0.704566*(xsoll)))+14.5212
E701077['logifunc']=1847.28/(1+312.09*np.exp(-0.606454*(X710077))-8.16471
plt.图(dpi=300)
plt.plot(X710077,E701077['logifuncsoll','r',markersize=np.sqrt(1),label=“soll”,color='red')
plt.plot(X710077,E701077['logifunc','r',markersize=np.sqrt(1),label=“E701077”,color='purple')
传奇故事
图,ax=plt.子批次(1,1,sharex=True)
ax.plot(X710077,E701077['logifunc',],线宽=1,标签='logifunc',颜色='purple')
ax.plot(X710077,E701077['logifuncsoll',线宽=1,标签='logifuncsoll',颜色='black')
(X710077,E701077['logifuncsoll'],E701077['logifunc'],其中=E701077['logifunc']>=E701077['logifuncsoll'],facecolor='green',interpolate=True)之间的最大填充量

(X71077,E701077['logifuncsoll'],E701077['logifunc'],其中=E701077['logifunc']]之间的ax.fill_两行之间的总差值使用scipy积分差值函数的绝对值

import scipy.integrate
left_lim = 0
right_lim = 27
func = lambda x: abs( (1811.7/ (1 + 769.67 * np.exp(-0.704566*(x)))+14.5212)-
(1847.28 / (1 + 312.09 * np.exp(-0.606454*(x)))-8.16471) )

area = scipy.integrate.quad(func, left_lim, right_lim)
要查找交点,请使用Shapely

import shapely
from shapely.geometry import LineString, Point

line1 = LineString(E701077['logifuncsoll'].values)
line2 = LineString(E701077['logifunc'].values)

int_pt = line1.intersection(line2)
point_of_intersection = int_pt.x, int_pt.y

print(point_of_intersection)

非常感谢!计算工作非常完美。但是有交点的部分给了我一个错误:
modulenofounderror:没有名为“shapely”的模块。
我添加了您添加的包。