You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中计算绿色曲线与红色直线间的指定区域面积?

图表示例

计算红色直线与绿色曲线差值面积的实用方案

不需要找数学函数,用你已经拿到的离散绿色数据点就能计算——红色是恒定值,且数据每秒一个(时间间隔固定为1秒),直接用数值方法即可,步骤如下:

  • 确定红色直线的恒定值red_value(从图表读取或业务设定)
  • 收集按时间顺序排列的绿色数据点,每秒一个
  • 遍历绿色数据,只计算绿色值低于红色值时的差值(red_value - 绿色值),其余情况差值为0
  • 用简单的数值积分方法计算面积,因为时间间隔是1秒,计算非常简便:
    • 矩形法:直接把所有有效差值相加,结果就是面积(每个差值对应1秒间隔的矩形面积)
    • 梯形法:精度稍高,公式为 0.5*(第一个差值+最后一个差值) + 中间所有差值的和

批量计算历史数据的面积

# 替换成实际的红色恒定值
red_value = 10
# 替换成你从cURL获取的绿色数据列表(按时间顺序)
green_values = [8, 9, 11, 7, 6, 10, 8]

# 计算有效差值
diff_values = []
for g_val in green_values:
    if g_val < red_value:
        diff_values.append(red_value - g_val)
    else:
        diff_values.append(0)

# 矩形法(简单易理解)
area_rect = sum(diff_values)
# 梯形法(精度略高)
area_trap = 0.5 * (diff_values[0] + diff_values[-1]) + sum(diff_values[1:-1])

print(f"矩形法面积: {area_rect}")
print(f"梯形法面积: {area_trap}")

实时计算累积面积

如果是要实时处理每秒的新数据,不用存所有历史点,直接累积即可:

import time

red_value = 10
total_area = 0

def get_green_data():
    # 替换成你的cURL请求获取绿色值的逻辑
    # 示例:模拟获取随机绿色值
    import random
    return random.randint(6, 12)

while True:
    current_green = get_green_data()
    if current_green < red_value:
        total_area += (red_value - current_green)
    print(f"当前累积面积: {total_area}")
    time.sleep(1)  # 每秒获取一次数据

内容的提问来源于stack exchange,提问作者wolliumm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 19:55:19