2016-05-12 22 views

回答

4

嗯,實際上,curve確實有效,但看不到它。爲了解釋這一點,我們添加一些代碼行:

f1 <- function(x) 0.044*x+1.638 
f2 <- function(x) 0.3438*x+0.5155 
x0 <- seq(0, 1, by = 0.1) 

我已經f1f2定義你的榜樣作用。我還採取[0,1]之間的11個採樣點進行評估和繪圖。爲什麼這個範圍?因爲沒有通過參數from,to(參見?curve),curve的規定將在該範圍上繪圖。

現在,讓我們來看看這個:

>f1(x0) 
[1] 1.6380 1.6424 1.6468 1.6512 1.6556 1.6600 1.6644 1.6688 1.6732 1.6776 
[11] 1.6820 
> f2(x0) 
[1] 0.51550 0.54988 0.58426 0.61864 0.65302 0.68740 0.72178 0.75616 0.79054 
[10] 0.82492 0.85930 

f1的函數值比f2高出許多。當您第一次撥打curve來繪製f1時,它將修復ylim以粗略顯示f1(x)的範圍。因此,當您添加f2(x)時,將不會在此ylim中看到。

試試這個,首先選擇一個共享ylim

ylim <- range(c(f1(x0), f2(x0))) 
curve(f1, ylim = ylim) 
curve(f2, add=TRUE, col = "red") 

Plot

這種問題是一個常見的問題。當您決定在單個圖表上繪製多個對象時,您需要設置足夠大的適當的xlimylim以容納所有對象。不要指望R「調整」這些;它不能做到這一點。繪製範圍是在第一個繪製時確定的。

+2

優秀的解釋,特別是最後一段。 +1 – bgoldst

相關問題