生成用于3d图的点网格的好方法

时间:2013-07-17 13:22:10

标签: r lattice

我经常想用R来绘制一幅3d图,例如:如下。

X=seq(-3,3,0.05)
y=c(); for(i in X) { y=c(y,rep(i,length(X))) }
x=rep(X,length(X))
z=pmin(x,y)
library(lattice)
wireframe(z~x*y, shade=TRUE, scales=list(arrows=FALSE))

这样可以很好地生成情节

enter image description here

但是有更自然/有效的方法来生成xy向量吗?我想要一个类似“产品”操作符的东西,它给了我所有可能的配对。

1 个答案:

答案 0 :(得分:5)

使用expand.gridouter

可以轻松实现此目的
library(lattice)

x <- seq(-3,3,by=0.05)
y <- seq(-3,3,by=0.05)

grid <- expand.grid(x=x, y=y)

dim(grid)
[1] 14641     2

grid$z = with(grid, pmin(x,y))

wireframe(z ~ x*y, data=grid, shade=TRUE, main="X=Y",
scales=list(arrows=FALSE))

contourplot(z ~ x*y, data=grid, cuts=10, aspect = "iso")