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
相关产品推荐
相关产品推荐

