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

如何在R语言中对函数曲线划分的指定条件区域进行着色

R绘图区域着色问题排查与修正

原代码核心问题

  • 填充路径构造错误:polygon()要求输入的坐标点按顺时针/逆时针顺序排列形成闭合路径,原代码直接拼接固定坐标和筛选后的x/y值,坐标对应关系混乱,无法形成符合要求的填充区域
  • 未区分不等式对应的x区间:
    • ((1+x)/(1-x))² < 1仅在x<0时成立,对应条件2的着色区域
    • ((1+x)/(1-x))² > 1仅在x>0时成立,对应条件3的着色区域
  • 坐标边界匹配错误:原代码设置的y轴上限为15,但填充时写死了y=16的边界,超出绘图范围易出现显示异常

修正后可运行代码

# 拆分正负x区间分别处理,避免逻辑混淆
x_neg <- seq(-0.6, 0, length = 1100)
x_pos <- seq(0, 0.6, length = 1100)
# 计算对应区间的曲线值
curve_neg <- ((1 + x_neg)/(1 - x_neg))^2
curve_pos <- ((1 + x_pos)/(1 - x_pos))^2

# 初始化画布
plot(0, 1, xlim = c(-0.6, 0.6), ylim = c(-1, 15), xlab = "x", ylab = "y")
# 绘制参考虚线
abline(h = 1, lty = "dashed")
abline(v = 0, lty = "dashed")
curve(((1+x)/(1-x))^2, add = TRUE, lty = "dashed", from = -1, to = 1)

# 填充条件2区域:y ≤ ((1+x)/(1-x))² < 1(x负区间,y从绘图下限到曲线值)
polygon(
  c(x_neg, rev(x_neg)),
  c(curve_neg, rep(-1, length(x_neg))),
  density = 20, angle = 45, border = NA, col = "blue"
)

# 填充条件3区域:1 < ((1+x)/(1-x))² ≤ y(x正区间,y从曲线值到绘图上限)
polygon(
  c(x_pos, rev(x_pos)),
  c(curve_pos, rep(15, length(x_pos))),
  density = 20, angle = -45, border = NA, col = "red"
)

代码说明

  • 拆分正负x区间分别计算曲线值,避免不同区间的逻辑混淆
  • 构造polygon路径时,先按顺序取区间内的x和对应曲线y值,再倒序取x和对应边界y值,形成完整闭合路径
  • 两种区域使用不同角度的填充线区分,也可直接修改col参数更换填充颜色

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:15:04