R语言绘图如何为两条曲线划分的三个区域填充不同颜色
你可以使用R基础绘图系统的polygon()函数,提取两条曲线的坐标后分别构造三个目标区域的闭合多边形即可实现对应填充效果,完整代码如下:
# 定义原曲线函数 f <- function(x,peak_x=10,peak_y=11,coef=.004) coef*-(x-peak_x)^2+peak_y # 提取两条曲线的坐标,不直接绘图 top_curve <- curve(f, 0, 65, plot = FALSE) bottom_curve <- curve(f(x, peak_y = 6, coef = .003), 0, 65, plot = FALSE) # 初始化空白画布 plot(0, 0, type = "n", xlim = c(0, 65), ylim = c(0, 11), xlab = "x", ylab = "y") # 填充顶部曲线上方红色区域 polygon( x = c(top_curve$x, rev(top_curve$x)), y = c(top_curve$y, rep(11, length(top_curve$x))), col = "red", border = NA ) # 填充两条曲线中间黄色区域 polygon( x = c(top_curve$x, rev(bottom_curve$x)), y = c(top_curve$y, rev(bottom_curve$y)), col = "yellow", border = NA ) # 填充底部曲线下方绿色区域 polygon( x = c(bottom_curve$x, rev(bottom_curve$x)), y = c(bottom_curve$y, rep(0, length(bottom_curve$x))), col = "green", border = NA ) # 绘制两条原始曲线,显示在填充层上方 lines(top_curve, lwd = 2) lines(bottom_curve, col = 3, lwd = 2)
核心逻辑说明:
- 先调用带
plot = FALSE参数的curve()函数,仅提取两条曲线的横纵坐标值,避免提前绘图影响填充效果 polygon()会根据传入的首尾衔接的坐标点生成闭合多边形,我们分别构造三个填充区域的坐标,指定对应填充色,设置border = NA隐藏多余的多边形边框- 所有填充操作完成后再绘制两条原始曲线,保证曲线不会被填充层遮挡
内容的提问来源于stack exchange,提问作者Simon Harmel
相关产品推荐
相关产品推荐

