【问题标题】:increasing 'x' and 'y' values expected预期增加“x”和“y”值
【发布时间】:2014-05-14 18:17:18
【问题描述】:

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

我遇到了同样的错误

【问题讨论】:

    标签: r


    【解决方案1】:

    正如错误消息所说,xy 都应该增加。试试y &lt;- 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)
    

    【讨论】:

      【解决方案2】:

      正如错误消息所暗示的,一个问题是y&lt;-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")
      

      【讨论】:

      • 感谢您的回答,例如,此代码工作正常,但我已在其他数据上对其进行了测试,并得到相同的错误。我已经更新了我的帖子。你能看看我的新数据吗
      • 很明显——在你的向量测试中,数据仍然不是升序的!试试x&lt;-sort(test)instead。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-05
      • 2013-04-27
      • 1970-01-01
      • 2021-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多