在R中绘制一个连续函数

4

我该如何在R中绘制类似 y = a*b 的图形,其中 y 等于某个常数,a,b > 0

例如,a*b=5。希望在该线上绘制。

我只看到过将 ab 的值列表传递给绘图函数,并从这些值绘制 y,而不是绘制连续曲线。

f <- function(a,b) {a*b}

我该如何在R中实现以下操作?
f <- function(a,b) {a*b = 5}
1个回答

4

这被称为参数绘图。如果你不能或不想解出y关于x的表达式(本例中是y=5/x),你可以在网格上计算值并请求R绘制相关等高线。来自emdbook包的curve3d函数为此任务提供了方便的封装程序。

library(emdbook)
curve3d(x*y,sys3d="contour",levels=5,
        xlim=c(0,5),ylim=c(0,5))
curve(5/x,col=2,add=TRUE)

但是在 R 基础知识中,这其实也并不太难:

xvec <- seq(0,5,length=51)
yvec <- seq(0,5,length=51)
z <- outer(xvec,yvec,"*") ## "*" is default but you could specify
                          ## any other _vectorized_ function of two
                          ## arguments ...
contour(xvec,yvec,z,levels=5)

如果您的函数在x和y中不是向量化的,您可以采取以下方法之一:(1) 使用?Vectorize使其向量化;(2) 对您的x和y向量使用expand.gridapply您的函数,然后将结果向量合并回矩阵;(3) 使用嵌套的for循环;或者(4) 放弃并使用emdbook::curve3d(这就是它的用途)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接