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

如何用Python基于Excel数据绘制曲线并计算红、绿区域曲线下面积

Python计算曲线下面积(含分区域统计)

前置依赖安装

先安装所需的Python库:

pip install numpy scipy matplotlib

1. 数据导入

假设你的6000+数据点存储在CSV文件中(第一列是横坐标x,第二列是纵坐标y),用numpy快速读取:

import numpy as np

# 替换成你的数据文件路径
x, y = np.loadtxt('data_points.csv', delimiter=',', unpack=True)

2. 计算曲线下总面积

推荐用辛普森法(对平滑曲线拟合精度更高)或梯形法,借助scipy.integrate模块实现:

from scipy.integrate import trapezoid, simpson

# 梯形法
total_area_trapezoid = trapezoid(y, x)
# 辛普森法
total_area_simpson = simpson(y, x)

print(f"梯形法总面积:{total_area_trapezoid:.2f}")
print(f"辛普森法总面积:{total_area_simpson:.2f}")

3. 分区域计算红色/绿色面积

假设红色区域是曲线低于基线(比如y=0)的部分,绿色区域是曲线高于基线的部分,代码如下:

# 替换成你图中的基线值,比如0或其他拟合线
baseline = 0

# 绿色区域:曲线高于基线的部分
y_green = np.where(y > baseline, y - baseline, 0)
green_area = simpson(y_green, x)

# 红色区域:曲线低于基线的部分(取绝对值保证面积为正)
y_red = np.where(y < baseline, baseline - y, 0)
red_area = simpson(y_red, x)

print(f"绿色区域面积:{green_area:.2f}")
print(f"红色区域面积:{red_area:.2f}")

如果你的基线不是固定值,而是另一条曲线(比如拟合的直线),可以先拟合基线:

# 拟合线性基线(根据需求调整拟合阶数)
coefficients = np.polyfit(x, y, 1)
baseline_curve = np.polyval(coefficients, x)

# 用基线曲线替代之前的baseline变量即可
y_green = np.where(y > baseline_curve, y - baseline_curve, 0)
green_area = simpson(y_green, x)

4. 可视化验证

用matplotlib绘制曲线并填充区域,确认计算的区域是否正确:

import matplotlib.pyplot as plt

plt.figure(figsize=(12, 6))
plt.plot(x, y, color='darkblue', label='原始曲线')
# 绘制基线
plt.plot(x, baseline if isinstance(baseline, int) else baseline_curve, color='gray', linestyle='--', label='基线')
# 填充绿色区域
plt.fill_between(x, baseline, y, where=(y > baseline), color='green', alpha=0.3, label='绿色区域')
# 填充红色区域
plt.fill_between(x, y, baseline, where=(y < baseline), color='red', alpha=0.3, label='红色区域')

plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('曲线及分区域面积')
plt.legend()
plt.show()

关键提示

  • 确保x数组是单调递增的,数值积分要求横坐标有序
  • 辛普森法对数据点数量无严格要求,6000+数据点可以直接使用
  • 如果数据有噪声,可先对y做平滑处理(比如scipy.signal.savgol_filter)再计算面积

内容的提问来源于stack exchange,提问作者Sujith Kumar S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 05:27:23