2010-10-29 61 views
21

一个绘制对应于给定函数曲线的方法是这样的:在同一个情节绘制多个函数曲线

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

如何添加另一个函数的曲线(如FUN2,这也被定义其数学公式)在同一个阴谋?

+0

使用plotFun {}镶嵌http://rgm3.lab.nig.ac.jp/RGM/R_rdfile?f=mosaic/man/plotFun.Rd&d=R_CC – 2014-02-16 17:44:42

回答

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

检查也帮助页面curve

+8

请注意,你不能总是使用'add'参数:它在这里工作是因为你正在传递一个函数来绘图,但是如果你写了'plot(x,y,add = TRUE)',你就会得到'add'不是图形参数的警告。 – nico 2010-10-29 09:52:46

+1

@nico是的。这是导致函数调用'curve'的'plot'的非常特殊的情况。这就是为什么总是使用'curve'来绘制函数的原因。 – Marek 2010-10-29 10:07:20

8

使用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调用中使用。

+2

怎么样直接行:) – VitoshKa 2010-10-29 08:23:45

+0

是啊,这是另一种选择。这实际上取决于你需要做什么......有几种方法可以在R中完成这项任务。:) – nico 2010-10-29 09:49:03

5

使用参数()

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进行处理,如果缩放不重叠等,则会抑制坐标轴pp。至少对于更多一般解决方案你展示的内容确实回答了问题:) – 2010-10-29 15:39:07

22

使用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

matplot是最好的答案,因为如果你开始添加曲线,你最终可能会离开当前的绘图区域。 matplot为你排序这一切,并确保两个功能保持在视图中。 – Spacedman 2010-10-29 09:04:11

+2

@Spacedman:如果您事先不知道这些功能会怎么样? :) – nico 2010-10-29 09:53:56