R:重新创建3D网格图

时间:2016-03-10 17:45:47

标签: r plot 3d

如何在R中重新创建以下图?

enter image description here

我正在努力生成数据,因为Z坐标是用以下公式确定的:

enter image description here

,其中

enter image description here

矢量化解决方案会很好,3D交互式绘图会更好。

我有以下内容:

## generate the data points from a multivariate normal
library(MASS)
library(ggplot2)
Sigma <- matrix(c(10,3,3,2),2,2)
set.seed(1)
df <- data.frame(mvrnorm(n=100,mu=c(10,10),Sigma=Sigma)) # X1=x, X2=y

theta0 = theta0 <- seq(-5,5,by=0.5)
theta1 <- seq(-5,5,by=0.5)
z = NULL
m <- theta1

1 个答案:

答案 0 :(得分:0)

这是一个使用rgl软件包启动并运行的原型。如果你想要旋转的其他交互性,那么需要追求其他东西。此外,下面的一些内容是硬编码的(变量名称和df),因此可以改进

library(MASS)
library(ggplot2)
Sigma <- matrix(c(10,3,3,2),2,2)
set.seed(1)
df <- data.frame(mvrnorm(n=100,mu=c(10,10),Sigma=Sigma)) # X1=x, X2=y    
theta0 = theta0 <- seq(-5,5,by=0.5)
theta1 <- seq(-5,5,by=0.5)

# Produce J
f <- Vectorize(function(t0, t1) { sum((t0 + t1*df$X1 - df$X2)^2)})
z <- outer(theta0, theta1, f)

# Get the rgl library and plot
library(rgl)
persp3d(theta0, theta1, z, col="lightgray", smooth=TRUE)