我想用这段代码做一个非常简单的3D图:
x<-c(1:10)
y<-c(10:1)
z<-cbind(x,y)
persp(x,y,z, theta = 30, phi = 30, expand = 0.5, col = "lightblue")
但是我收到了这个错误:
Error in persp.default(x, y, z, theta = 30, phi = 30, :
increasing 'x' and 'y' values expected
我该怎么做才能解决这个问题?
更新 如果我改变我的数据。例如对于x
test<-c(0.4118836, 0.3481329, 0.3582897, 0.3122690, 0.3346040, 0.2409363, 0.2474494, 0.1744042, 0.1589965, 0.2435564)
然后
x<-test
y<-c(1:10)
z<-matrix(x,nrow=length(x),ncol=length(y))
persp(x,y,z, theta = 30, phi = 30, expand = 0.5, col = "lightblue")
我收到同样的错误
答案 0 :(得分:4)
错误信息说明,x
和y
都应该增加。试试y <- 1:10
。
此外,z
也可能存在问题。我们读了?persp
:
请注意,persp将z矩阵解释为
f(x[i], y[j])
值的表,以便x轴对应于行号,y轴对应于列号,列1位于底部,因此使用标准旋转角度,矩阵的左上角显示在左侧,最靠近用户。
创建z
的简便方法是致电outer
。
尝试例如。
x <- 1:10
y <- 1:10
z <- outer(x, y, function(xi, yj) xi^2+yj^2)
persp(x, y, z)
答案 1 :(得分:2)
正如错误消息所暗示的,一个问题是在y<-c(10:1)
中y值不会增加......
此外,z需要是x * y矩阵。
请尝试以下方法:
x<-c(1:10)
y<-c(1:10)
z<-matrix(x,nrow=length(x),ncol=length(y)
persp(x,y,z, theta = 30, phi = 30, expand = 0.5, col = "lightblue")