【问题标题】:Plotly 3d surface graph has incorrect x and y axis valuesPlotly 3d 曲面图的 x 和 y 轴值不正确
【发布时间】:2016-09-19 15:07:19
【问题描述】:

我想用 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 轴不正确,我不确定如何获得正确的值。

【问题讨论】:

  • x 和 y 值是正确的。它们显示数据的行数和列数。 m.dune[1,1] 的值是 x=1 处的 z 高度; y=1。因此我假设你的矩阵有一个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")
  • 啊,解释了 x 和 y 值,知道如何显示真实值吗?单元格大小为 0.05,也许我可以将单元格大小乘以 x 和 y 值?

标签: r plotly


【解决方案1】:

正如 Jimbou 在评论中指出的那样,x 轴和 y 轴上的值是矩阵的行数和列数。由于我的像元大小为 0.05,因此这些值不代表正确的距离。要显示正确的距离,您必须在绘图图中添加正确的 x 和 y 值作为列表。这些 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 值不能有不同的大小/元素数量感到困惑......
猜你喜欢
  • 2021-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-08
  • 2021-11-13
  • 2018-05-06
相关资源
最近更新 更多