我经常想用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))
这样可以很好地生成情节
但是有更自然/有效的方法来生成x
和y
向量吗?我想要一个类似“产品”操作符的东西,它给了我所有可能的配对。
答案 0 :(得分:5)
使用expand.grid
和outer
:
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")