用 points() 绘制一个函数
Plotting a function with points()
我正在使用 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 所述,如果要从同一函数绘制多条线,也可以使用 curves
,并使用 ()
避免预先分配函数,使用add = i!=1
在每次迭代中代表 add = T
,除了第一次。
for(y in 1:10) {
curve((x + 10*y), from=-100, to=100, add=i!=1)
}
我正在使用 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 所述,如果要从同一函数绘制多条线,也可以使用 curves
,并使用 ()
避免预先分配函数,使用add = i!=1
在每次迭代中代表 add = T
,除了第一次。
for(y in 1:10) {
curve((x + 10*y), from=-100, to=100, add=i!=1)
}