R语言绘图:如何绘制满足x1*x2=38条件的平滑曲线
R语言绘制x1*x2=38平滑曲线的实现方法
你可以使用R内置的curve()函数实现该需求,这是最简便的方案,无需手动生成坐标点即可生成平滑曲线。
首先对目标方程做变形:由x1*x2=38可得x2=38/x1。由于要求x1、x2均落在0到10区间内,计算可得x1的有效取值范围为3.8~10(x1=3.8时x2=10,x1=10时x2=3.8,刚好符合取值边界要求)。
完整可运行代码
# 原有基础绘图代码 plot(1, type="n", xlab="x1", ylab="x2", xlim=c(0, 10), ylim=c(0, 10), axes = F) axis(1, seq(0,10,1), pos = 0) axis(2, seq(0,10,1), pos = 0) lines(x = c(0,10), y = c(10,10)) lines(x = c(10,10), y = c(0,10)) # 新增曲线绘制代码 curve(38/x, from = 3.8, to = 10, add = TRUE, lwd = 2, col = "red")
参数说明
38/x:是变形后的x2关于x1的函数表达式from、to:限定x1的有效绘制范围,保证计算出的x2不会超出0~10的区间add = TRUE:指定在已有画布上叠加绘制,不会覆盖之前已经画好的坐标轴和边框- 可选参数
lwd用于设置线宽,col用于设置线条颜色,方便和其他元素区分
替代方案
如果你希望手动控制坐标点精度,也可以先生成x1序列再用lines()函数绘制:
# 生成1000个连续的x1值,点越多线条越平滑 x1_seq <- seq(3.8, 10, length.out = 1000) x2_seq <- 38 / x1_seq lines(x1_seq, x2_seq, lwd = 2, col = "blue")
内容的提问来源于stack exchange,提问作者Emily
相关产品推荐
相关产品推荐

