使用 R 进行 2D 投影的 3D 表面

tho*_*nti 5 r ggplot2 density-plot r-plotly

我需要使用 R 绘制具有 2D 投影的 3D 表面,如下所示。

3D 绘图

它具有 3D 密度图,例如,在 R 中使用plotly 可以轻松完成此操作。另一方面,二维表面到目前为止,我在寻找如何绘制它们的过程中还没有运气。我发现的最好的例子是这个例子,但它使用Python而不是R。

我还发现 RSM(响应面方法)包可能有绘制此图的工具,但我研究了包文档并查找了在线示例,到目前为止我还没有找到任何接近此图的东西质量。

Base R 函数persp看起来也可以提供一些答案,但到目前为止我还没有成功地使用它来绘制 2D 投影。包plot3D也可能提供解决方案的线索。

预先感谢您对此的任何帮助。

vpz*_*vpz 1

好吧,我不知道你的数据是什么样子,但如果你没有特定的数据,你可以使用r-plotly surface的参考。

这是使用 R 火山数据的一些示例。

诀窍是使用contours()

代码:

# volcano is a numeric matrix that ships with R
plot_ly(z = ~volcano) %>% add_surface(
  contours = list(
    z = list(
      show=TRUE,
      usecolormap=TRUE,
      highlightcolor="#ff0000",
      project=list(z=TRUE)
    ),
    y = list(
      show=TRUE,
      usecolormap=FALSE, # Projection without colormap
      highlightcolor="#ff0000",
      project=list(y=TRUE)
    ),

    x = list(
      show=TRUE,
      usecolormap=TRUE,
      highlightcolor="#ff0000",
      project=list(x=TRUE)
    )

  )
)
Run Code Online (Sandbox Code Playgroud)

输出:

3d图