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

R语言绘制逻辑函数曲线时无法添加图例,如何解决?

核心错误说明

  • legend()放置位置完全错误:你直接将legend()函数作为参数放在了plot()的括号内部,既没有闭合plot()的参数列表引发语法报错,且legend()本身是独立的底层绘图函数,不能作为plot()的入参使用。
  • 缺少图例和曲线的匹配参数:即使调整位置,若不指定图例的颜色、线条样式,也会出现图例和实际曲线不匹配的问题。

修正后完整代码

自定义函数部分

lg <- function(x, a = 1, b = 1){
  exp(a+b*x) / (1+exp(a+b*x))
}

变化参数b的绘图代码

# 先绘制空画布,闭合plot函数括号
plot(NA, xlim=c(-5,5), ylim=c(0,1), xlab = "x", ylab = "y")
# 独立调用legend函数,指定与曲线匹配的颜色、线条样式
legend(2, 0.4, legend=c("b = 1", "b = 2", "b = 3", "b = 4", "b = 5"), col = 1:5, lty = 1)
# 循环绘制曲线
for (b in c(1:5)){
  curve(expr = lg(x, 1, b), from = -5, to = 5, n = 100, add= TRUE, col = b)
}

变化参数a的绘图代码

# 先绘制空画布,闭合plot函数括号
plot(NA, xlim=c(-5,5), ylim=c(0,1), xlab = "x", ylab = "y")
# 独立调用legend函数,指定与曲线匹配的颜色、线条样式
legend(2, 0.4, legend=c("a = 1", "a = 2", "a = 3", "a = 4", "a = 5"), col = 1:5, lty = 1)
# 循环绘制曲线
for (a in c(1:5)){
  curve(expr = lg(x, a, 1), from = -5, to = 5, n = 100, add= TRUE, col = a)
}

如果需要避免图例被曲线遮挡,也可以把legend()的调用放在循环绘制曲线的代码之后,展示效果一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:51:03