You need to enable JavaScript to run this app. 如何在R中计算自定义绘制的频率多边形下方的覆盖区域面积
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中计算自定义绘制的频率多边形下方的覆盖区域面积

自定义频率多边形填充区域的面积计算方案

你绘制的红色填充区域本质是由直线段拼接形成的闭合多边形,不存在光滑曲线,不需要复杂的积分拟合,通过几何方法即可得到100%精确的结果,完全匹配屏幕上显示的区域范围。

核心逻辑

你调用polygon()函数时传入的两组坐标c(1, x1, 5)、c(0, y1, 0)已经完整描述了红色填充区域的所有边界顶点,只需要对这个闭合多边形做面积计算,就能得到无偏差的结果。

具体实现代码

方法1:梯形积分法(最简洁)

频率多边形的边界全部为直线段,x轴上方、多边形轮廓下方的面积和梯形积分计算结果完全等价:

x1 <- 1:5                         
y1 <- c(0.2, 0.14, 0.7, 0.11, 0.1) 
# 手动计算,无需安装额外包
# 计算相邻x点的间距
dx <- diff(x1)
# 逐段计算梯形面积并累加
area_manual <- sum( (y1[-length(y1)] + y1[-1])/2 * dx )

# 调用pracma包的现成梯形积分函数,结果和手动计算完全一致
# install.packages("pracma")  # 首次使用需安装
library(pracma)
area_trapz <- trapz(x1, y1)

方法2:鞋带公式计算(100%匹配绘图的填充区域)

直接复用你绘图时的多边形顶点坐标,用通用多边形面积公式计算,和实际绘制的红色区域范围完全对齐,不会出现坐标偏移:

# 提取和polygon()函数完全一致的顶点坐标序列
poly_x <- c(1, x1, 5)
poly_y <- c(0, y1, 0)
# 鞋带公式计算多边形面积
area_shoelace <- 0.5 * abs(
  sum(poly_x[-length(poly_x)] * poly_y[-1]) -
  sum(poly_x[-1] * poly_y[-length(poly_y)])
)

结果说明

对你给出的示例数据,三种计算方法的结果完全一致,最终红色区域总面积为1.1。

适用场景提醒

  • 由于你绘制的图形全部是直线段连接,上述计算为精确值,不存在数值积分的近似误差。
  • 后续如果修改x的取值、y的数值或者调整多边形边界,只需要同步更新顶点坐标向量,计算逻辑不需要改动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.27 11:54:03