在同一张图中绘制多个函数曲线

33

画出给定函数对应的曲线的方法如下:

fun1 <- function(x) sin(cos(x)*exp(-x/2))
plot (fun1, -8, 5)

我该如何在同一张图中添加另一个函数曲线(例如fun2,其也由数学公式定义)?


4个回答

32
plot (fun2, -8, 5, add=TRUE)

请查看curve的帮助页面。


10
请注意,您并不总是能够使用add参数:它在这里起作用是因为您正在向绘图函数中传递一个函数,但是如果您写成plot(x,y, add=TRUE),您只会收到一个警告,提示add不是绘图参数。 - nico
3
@nico 是的,这是一个很特殊的情况,因为它涉及到使用 curve 来绘制函数图像。所以通常我们会使用 curve 来绘制函数。 - Marek

28

使用 matplot

fun1<-function(x) sin(cos(x)*exp(-x/2))
fun2<-function(x) sin(cos(x)*exp(-x/4))
x<-seq(0,2*pi,0.01)
matplot(x,cbind(fun1(x),fun2(x)),type="l",col=c("blue","red"))

6
Matplotlib是最佳选择,因为如果您开始添加曲线,可能会导致它们超出当前绘图区域。Matplotlib可以为您解决这些问题,并确保两个函数都在视图中显示。 - Spacedman
2
@Spacedman:如果你事先不知道函数怎么办? :) - nico

9
使用 points 函数。它的语法与 plot 完全相同。
所以,例如:
fun1 <- function(x) sin(cos(x)*exp(-x/2))

x <- seq(0, 2*pi, 0.01)
plot (x, fun1(x), type="l", col="blue", ylim=c(-0.8, 0.8))
points (x, -fun1(x), type="l", col="red")

请注意,绘图参数如ylimxlim、标题等仅从第一个plot调用中使用。

是的,那是另一个选项。这真的取决于你需要做什么...在R中完成这个任务有几种方法。 :) - nico

7
使用par()函数
fun1 <- function(x) sin(cos(x)*exp(-x/2))
fun2 <- function(x) sin(cos(x)*exp(-x/4))

plot(fun1, -8,5)
par(new=TRUE)
plot(fun2, -8,5)

1
我一直使用相同的范例。在第一个图中,您可能想要一个ylim=range(...)表达式,在第二个图中可能需要不同的颜色,尝试xlab和ylab,如果缩放不重叠,则抑制轴等等。至少对于更一般的解决方案。您展示的确实回答了所提出的问题 :) - Dirk Eddelbuettel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接