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

时间:2016-07-18 16:29:35

标签: r ggplot2 plotly

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

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr>
    <td>a</td>
    <td>0</td>
    <td><span>xxx</span>
    </td>
  </tr>
  <tr>
    <td>b</td>
    <td>0</td>
    <td><span>xxx</span>
    </td>
  </tr>
  <tr>
    <td>c</td>
    <td>0</td>
    <td><span>xxx</span>
    </td>
  </tr>
</table>

这就是我所期待的 enter image description here

1 个答案:

答案 0 :(得分:4)

我安装了plotly,从您的问题中复制了代码并且运行得非常好。但它确实没有返回您附加的3D图。原因是现在ggplolty()采用你的ggplot并“转换为情节图”。正如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")