如何在R中绘制类似y = a*b
的内容,其中y
等于某个常量和a,b > 0
。
例如a*b=5
。它绘制那条线的地方。
我只见过传递a
和b
的值列表,并从这些值中绘制y
,而不是绘制连续曲线。
f <- function(a,b) {a*b}
我如何在R中执行以下操作?
f <- function(a,b) {a*b = 5}
答案 0 :(得分:2)
这称为参数图。如果你不能或不想用x求解y(在这种情况下y = 5 / x),你可以计算网格上的值并让R绘制相关的轮廓线。 curve3d
包中的emdbook
函数为此任务提供了方便的包装。
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.grid
,apply
你的函数,并将结果向量折叠回矩阵; (3)使用嵌套的for
循环;或(4)放弃并使用emdbook::curve3d
(这就是它的用途)。