Plotly 3D曲面图的x和y轴数值不正确

7
我想使用Plotly制作一个3D表面图。这个过程进行得很顺利,但是x和y轴上的数值没有意义。它们比应该的要高得多。我在绘图时使用了一个矩阵,其中x和y值是行和列名称,而z值(称为高程)是矩阵本身。Plotly似乎没有使用x和y数据的值。矩阵中x和y的值范围在0到6之间。以下是我的矩阵的部分示例:
head(m.dune)    
>       1.90 1.95 2    2.05 2.01 2.15 
> 0     NA   NA   NA   NA   NA   NA
> 0.05  NA   NA   NA   NA   NA   NA
> 0.10  1.14 1.14 NA   NA   NA   NA
> 0.15  1.15 1.15 1.15 1.15 1.16 1.16
> 0.20  1.16 1.16 1.16 1.16 1.16 1.17
> 0.25  1.17 1.17 1.17 1.17 1.18 1.18

这是我一直在使用的代码:
dune.plot <- plot_ly(z = m.dune, type = "surface") %>%
layout(
  scene=list(
    xaxis=list(title='x (m)'),
    yaxis=list(title='y (m)'),
    zaxis=list(title='Elevation (m)')))
dune.plot

图表如下,x和y轴显示不正确,我不确定如何获得正确的值。

3d surface plot


1
x和y的值是正确的。 它们显示了数据的行数和列数。 值m.dune [1,1]是位置x = 1; y = 1处的z高度。 因此,我假设您的矩阵的dim()约为c(70,80)。 比较plot_ly(z = volcano [1:20、1:20] / 100,type =“surface”)plot_ly(z = volcano [1:50、1:50] / 100,type =“surface”) - Roman
啊,那就解释了 x 和 y 值的含义,有没有想法如何显示真实的值?单元格大小为 0.05,也许我可以将单元格大小与 x 和 y 的值相乘? - Marinka
1个回答

9

正如Jimbou在评论中指出的那样,x轴和y轴上的值是矩阵的行数和列数。由于我的单元格大小为0.05,这些值并不代表正确的距离。要显示正确的距离,您需要将正确的x和y值作为列表添加到plotly图表中。这些x和y值必须具有相同的大小,否则图形的一部分将被剪切。获取正确的x和y值的代码如下:

y <- x <- as.numeric(rownames(m.dune))
# More rows than column, and the x and y should have the same size

dune1.plot <- plot_ly(z = m.dune1, x= x, y=y, type = "surface") %>%
layout(
  scene=list(
    xaxis=list(title='x (m)'),
    yaxis=list(title='y (m)'),
    zaxis=list(title='Elevation (m)')))
dune1.plot

为什么 x 和 y 值的大小 / 元素数量不能不同感到困惑... - Roman Scher

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