如何在R中创建3D曲面图?

时间:2013-07-04 14:20:15

标签: r

我正在使用多元线性回归。

我有z输出,这是x * y交互的结果。

我想创建这些数据的表面图,但没有任何运气。 我尝试了突击队的线框和persp,但似乎我还没能设计我的突击队员。

我创建了一个漂亮的scatterplot3d,但是如何创建相同数据的表面图?

2 个答案:

答案 0 :(得分:4)

当你说你已经在线性回归中拟合了3D曲面时,我假设你知道你正在做什么。 perspwireframe期望的是x和y值的网格,以及每个网格点的预测z高度。您可以使用expand.grid生成此内容。这是一个指示性的例子。

preddf <- expand.grid(x=seq(xmin, xmax, len=51),
                      y=seq(ymin, ymax, len=51))

preddf$z <- predict(model, preddf)

persp(preddf)

将[{1}},xminxmaxymin替换为预测变量的范围,将51替换为所需网格的大小/密度。

答案 1 :(得分:3)

expand.grid的另一种替代方法是使用outer,速度更快。

使用@HongOoi数据:

z <- outer(x,y, function(x,y) 
  predict(mod,data.frame(x=x,y=y)))
persp(x,y,z)