當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R curve 繪製函數圖


R語言 curve 位於 graphics 包(package)。

說明

繪製與區間上的函數相對應的曲線[from, to].curve還可以繪製變量中的表達式xname, 默認 '⁠x⁠’。

用法

curve(expr, from = NULL, to = NULL, n = 101, add = FALSE,
      type = "l", xname = "x", xlab = xname, ylab = NULL,
      log = NULL, xlim = NULL, ...)

## S3 method for class 'function'
plot(x, y = 0, to = 1, from = y, xlim = NULL, ylab = NULL, ...)

參數

expr

函數的名稱,或者寫為 x 函數的 callexpression ,它將計算為與 x 長度相同的對象。

x

‘vectorizing’ 數字R函數。

y

from 的別名,以便與 plot 兼容

from, to

繪製函數的範圍。

n

整數;要評估的 x 值的數量。

add

邏輯性; if TRUE 添加到已有的繪圖中; if NA 開始一個新圖,采用上一個圖中 x 軸的限製和對數縮放的默認值。如果沒有打開圖形設備,則視為FALSE(如果提供不同的值,則會出現警告)。

xlim

NULL 或長度為 2 的數值向量;如果非NULL,它提供c(from, to)的默認值,除非add = TRUE,否則選擇繪圖的x-limits - 請參閱plot.window

type

繪圖類型:參見plot.default

xname

給出用於 x 軸的名稱的字符串。

xlab, ylab, log, ...

標簽和graphical parameters也可以指定為參數。有關 log 默認值的解釋,請參閱“詳細信息”。

對於 plot"function" 方法, ... 可以包含 curve 的任何其他參數,expr 除外。

細節

函數或表達式 expr (對於 curve )或函數 x (對於 plot )在 [from, to] 範圍內等距的 n 點處進行計算。然後繪製以這種方式確定的點。

如果 fromtoNULL ,則默認為 xlim 的相應元素(如果不是 NULL )。

當兩者都沒有時會發生什麽from/to也不xlim指定 x-limits 是一個複雜的故事。為了plot(<function>)並為curve(add = FALSE)默認值是 。為了curve(add = NA)curve(add = TRUE)默認值取自上一個繪圖使用的x-limits。 (這與以下版本不同R2.14.0 之前。)

log 的值用於指定繪圖軸(除非 add = TRUE )以及如何解釋“等距”:如果 x 分量表示對數縮放,則繪製表達式或函數的點是相等的以對數刻度間隔。

add = TRUE 時,log 的默認值取自當前繪圖,而如果 add = NA 則 x 分量取自現有繪圖(如果有),並且 y 分量默認為線性。對於add = FALSE,默認值為""

這曾經是一個快速的破解,現在似乎有一個有用的目的,但可能會給不流暢的函數帶來不好的結果。

對於expensive-to-compute expr 會話,您應該使用更智能的工具。

curve 處理 expr 的方式引起了混亂。它首先查看expr是否是name(也稱為符號),在這種情況下,它被視為函數的名稱,並且expr被替換為對expr的調用名稱由 xname 指定的單個參數。否則,它會檢查 exprcallexpression ,並且它包含對 xname 給出的變量的引用(使用 all.vars ):其他任何內容都是錯誤。然後,在提供由 xname 給出、長度為 n 的名稱向量的環境中評估 expr ,並且應評估為長度為 n 的對象。請注意,這意味著 curve(x, ...) 被視為繪製名為 x 的函數的請求(並且在 plotfunction 方法中如此使用)。

plot 方法可以直接調用 plot.function

以不可見方式返回包含所繪製點的組件 xy 的列表。

警告

由於曆史原因,允許 add 作為 plot"function" 方法的參數,但其行為可能會讓您感到驚訝。建議僅將 addcurve 一起使用。

例子

plot(qnorm) # default range c(0, 1) is appropriate here,
            # but end values are -/+Inf and so are omitted.
plot(qlogis, main = "The Inverse Logit : qlogis()")
abline(h = 0, v = 0:2/2, lty = 3, col = "gray")

curve(sin, -2*pi, 2*pi, xname = "t")
curve(tan, xname = "t", add = NA,
      main = "curve(tan)  --> same x-scale as previous plot")

op <- par(mfrow = c(2, 2))
curve(x^3 - 3*x, -2, 2)
curve(x^2 - 2, add = TRUE, col = "violet")

## simple and advanced versions, quite similar:
plot(cos, -pi,  3*pi)
curve(cos, xlim = c(-pi, 3*pi), n = 1001, col = "blue", add = TRUE)

chippy <- function(x) sin(cos(x)*exp(-x/2))
curve(chippy, -8, 7, n = 2001)
plot (chippy, -8, -5)

for(ll in c("", "x", "y", "xy"))
   curve(log(1+x), 1, 100, log = ll, sub = paste0("log = '", ll, "'"))
par(op)

也可以看看

splinefun 用於樣條插值,lines

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Draw Function Plots。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。