我有以下功能
f(x,y) = 2 x^2 + 12 x * y + 7 y^2
我想在R中绘制一个三维图形?我想知道是否可以这样做。所以我查看了互联网并尝试了下面的代码,但没有画出来。有人可以指出出了什么问题吗?
x <- seq(-100,100,0.1)
y <- seq(-100,100,0.1)
z <- 2*x^2 + 12 * x * y + 7 * y^2
xyz <- data.frame(cbind(x,y,z))
names(xyz) <- c('x', 'y', 'z')
library(lattice)
wireframe(z ~x*y, data = xyz, scales = list(arrows = FALSE), zlab = 'f(x,y)', drape = T)
答案 0 :(得分:2)
没有绘制任何内容,因为您的z
向量是一维的,仅在x=y
定义。要扩展数据框,请使用outer
和expand.grid
:
df <- expand.grid(x = x, y = y)
df$z <- as.vector(outer(x,y, function(x,y) {2*x^2 + 12 * x * y + 7 * y^2}))
wireframe(z ~ x * y, data = df, scales = list(arrows = FALSE), zlab = 'f(x,y)', drape = T)