我有两条曲线的x和y值列表,它们都有奇怪的形状,而且我没有任何函数。我需要做两件事:(1)绘制它并对曲线之间的区域进行着色,如下图所示;(2)找到曲线之间该着色区域的总面积。
在matplotlib中,我可以用fill-betweenx和fill-betweenx绘制和着色这些曲线之间的区域,但是我不知道如何计算它们之间的确切区域,特别是因为我没有任何这些曲线的函数。
有什么想法吗?
我到处找都找不到简单的解决办法。我很绝望,所以非常感谢你的帮助。
非常感谢!
编辑:为了以后的参考(如果有人遇到同样的问题),下面是我如何解决的(许多个月后):将每条曲线的第一个和最后一个节点/点连接在一起,形成一个形状怪异的大多边形,然后使用shapely自动计算多边形的面积,这是曲线之间的精确区域,不管它们走哪条路,也不管它们有多非线性。就像一个魔咒,已经跑了上千条曲线。:)
这是我的代码:from shapely.geometry import Polygon
x_y_curve1 = [(0.121,0.232),(2.898,4.554),(7.865,9.987)] #these are your points for curve 1 (I just put some random numbers)
x_y_curve2 = [(1.221,1.232),(3.898,5.554),(8.865,7.987)] #these are your points for curve 2 (I just put some random numbers)
polygon_points = [] #creates a empty list where we will append the points to create the polygon
for xyvalue in x_y_curve1:
polygon_points.append([xyvalue[0],xyvalue[1]]) #append all xy points for curve 1
for xyvalue in x_y_curve2[::-1]:
polygon_points.append([xyvalue[0],xyvalue[1]]) #append all xy points for curve 2 in the reverse order (from last point to first point)
for xyvalue in x_y_curve1[0:1]:
polygon_points.append([xyvalue[0],xyvalue[1]]) #append the first point in curve 1 again, to it "closes" the polygon
polygon = Polygon(polygon_points)
area = polygon.area
print(area)