使用 R 进行 2D 投影的 3D 表面
Posted
技术标签:
【中文标题】使用 R 进行 2D 投影的 3D 表面【英文标题】:3D surface with a 2D projection using R 【发布时间】:2019-04-10 11:13:31 【问题描述】:我需要使用 R 绘制一个带有 2D 投影的 3D 表面,如下图所示。
它具有 3D 密度图,例如,在 R 中使用 plotly 很容易做到这一点。另一方面,2D 表面到目前为止,我在寻找如何绘制它们时都没有运气。我找到的最好的是this example,但它使用 Python 而不是 R。
我还发现包 RSM(响应曲面方法)可能具有绘制此图的工具,但我研究了包文档并查找了在线示例,到目前为止我还没有找到任何接近的东西这张图的质量。
Base R 函数persp 看起来它也可以提供一些答案,但到目前为止我还没有成功使用它来绘制 2D 投影。包plot3D 也可能提供解决方案的线索。
提前感谢您对此提供的任何帮助。
【问题讨论】:
这个问题很有趣,但是你应该make it reproducible添加一些数据和代码。 也许有点矫枉过正,但使用github.com/tylermorganwall/rayshader 应该可以实现此显示的某些方面 @alistaire 我没有任何数据或代码,因为我不知道哪个包能够绘制这样的图表。比表面和 2D 投影也不重要。 制作 a reprex 不是 SO 问题的选项;这是一个要求,如果没有这个要求,这个问题可能会被关闭。开放式问题在RStudio Community 上得到了更积极的回应。rgl
包可能是 3D 绘图的可能解决方案,但您可能需要手动创建 2D 投影。祝你好运。
【参考方案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)
)
)
)
输出:
【讨论】:
以上是关于使用 R 进行 2D 投影的 3D 表面的主要内容,如果未能解决你的问题,请参考以下文章
在 UWP MapControl 中将点投影到 3D 地形表面
opencvprojectPoints 三维点到二维点 重投影误差计算