我正在使用 R 绘制函数,并且想要将描述多个函数的行添加到同一个图中。为了绘制函数,我写:
plot(function(x){x},
xlab="Celsius", xlim=c(-100, 100),
ylab="Degrees", ylim=c(-100, 100))
这将绘制一条 1:1 线。如果我想在同一个图表上绘制不同的函数,我可以使用 points()
函数,但这需要 x
的数据值提供,以便将 length(x)
点(由线连接)绘制为:
points(x=seq(-100, 100, by=0.1),
y=c(seq(-100, 100, by=0.1)-32)*5/9,
typ="l", col="red")
在绘制函数时是否可以在图中添加线条,而不必使用 points()
或其他函数计算数据点? 本质上,它是像这样的东西:
plot(function(x){x},
xlab="Celsius", xlim=c(-100, 100),
ylab="Degrees", ylim=c(-100, 100))
points(function(x){(x-32)*5/9},
typ="l", col="red")
这只是一个示例,它显示了 X 轴上的摄氏度和 Y 轴上的摄氏度之间的关系,单位为摄氏度(黑色)和华氏度(红色)。实际上,我想绘制多个复杂函数,但这只会给问题增加噪音。
我发现的一个解决方案是
plot(function(x){x},
xlab="Celsius", xlim=c(-100, 100),
ylab="Degrees", ylim=c(-100, 100))
par(new=TRUE)
plot(function(x){(x-32)*5/9},
xlab="", xlim=c(-100, 100),
ylab="", ylim=c(-100, 100),
axes=FALSE, col="red")
但每次都必须定义限制和标签以及 AXES=FALSE
似乎很麻烦。
最佳答案
您可以使用 plot
函数两次,并为第二个绘图添加 add = TRUE
。
使用plot
,您还可以使用from
和to
参数来避免重复y轴限制,尽管它会保留y轴- 第一个图中定义的轴限制(因此它可能不是最佳的)。
plot(function(x){x},
xlab="Celsius", xlim=c(-100, 100),
ylab="Degrees", ylim=c(-100, 100))
plot(function(x) {(x-32)*5/9}, from = -100, to = 100, typ="l", col="red", add=T)
正如@Roland和@user2554330所提到的,如果你想从同一个函数绘制多条线,你也可以使用曲线
,并使用()
来避免分配预先调用该函数,add = i!=1
代表除第一次之外的每次迭代中的 add = T
。
for(y in 1:10) {
curve((x + 10*y), from=-100, to=100, add=i!=1)
}
关于r - 用points()绘制函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70151625/