2010-10-29 66 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