预期增加 'x' 和 'y' 值

8

我想用这段代码做一个非常简单的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")

我遇到了同样的错误。
2个回答

5

根据错误信息,xy都应该是递增的。尝试使用y <- 1:10

此外,z也可能存在问题。我们在?persp中读到:

请注意,persp将z矩阵解释为f(x[i], y[j])值的表格,因此x轴对应行号,y轴对应列号,第一列位于底部,因此使用标准旋转角度时,矩阵的左上角显示在最靠近用户的左侧。

创建z的简单方法是调用outer

例如:

x <- 1:10
y <- 1:10
z <- outer(x, y, function(xi, yj) xi^2+yj^2)
persp(x, y, z)

4
正如错误信息所示,一个问题是在 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")

谢谢您的回答,对于这个示例,这段代码运行良好,但我已经在另一组数据上测试过,并且得到了相同的错误。我已经更新了我的帖子。能否请您查看我的新数据? - Kaja
显然,在你的向量测试中,数据仍然没有按升序排列!请尝试使用x<-sort(test) - jfmoyen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接