如何使用 ggplotly 绘制 3D 图形?

How to plot 3D graphs with ggplotly?

我是运行下面这个例子blog post 绘制 3D 图表。代码运行没有任何错误,但输出不符合预期。 这是代码

library(plotly)
pp <- function (n,r=4) {
    x <- seq(-r*pi, r*pi, len=n)
    df <- expand.grid(x=x, y=x)
    df$r <- sqrt(df$x^2 + df$y^2)
    df$z <- cos(df$r^2)*exp(-df$r/6)
    df
}
qplot(x, y, data=pp(100), geom="tile", fill=z)
ggplotly()

这就是我所期望的

我安装了 plotly,从您的问题中复制了代码,运行 非常好。但它确实 return 您附加的 3D 图。原因是现在 ggplolty() 使用了你的 ggplot 和 "transforms into a plotly plot"。博客中给出的示例 - post 很可能已贬值,正如 B. Bolker 在评论中所说的那样。

然而,这也有好处。 plotly 仍然有曲面图的选项(参见:plotly-documentation)。这意味着您可以使用以下代码重新创建示例:

library(reshape2)
library(plotly)
#
pp <- function (n,r=4) {
    x <- seq(-r*pi, r*pi, len=n)
    df <- expand.grid(x=x, y=x)
    df$r <- sqrt(df$x^2 + df$y^2)
    df$z <- cos(df$r^2)*exp(-df$r/6)
    df
}
data_xyz <- pp(100)
data_z <- acast(data_xyz, x~y, value.var = "z")
plot_ly(z = data_z,  type = "surface")