当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。