【问题标题】:R: Connect 2D coordinates with lines in 3D plot and add a normal distribution pdf based on the coordinatesR:将 2D 坐标与 3D 图中的线连接起来,并根据坐标添加正态分布 pdf
【发布时间】:2016-03-21 21:48:27
【问题描述】:

类似于3D Plot of normal distribution in R around a (x,y) point 使用类似代码

library(rgl)
open3d()

x <- seq(0, 10, length=100)
y <- seq(0, 10, length=100)


z = outer(x,y, function(x,y) dnorm(x,2.5,1)*dnorm(y,2.5,1))

persp3d(x, y, z,col = rainbow(100))

我想在 (x,y) 图上绘制正态分布。然而,与第一个问题不同,我想沿着一些特定的坐标绘制这个正态分布(它们都有 z=0 并且“躺在地上”(x,y))。它们模仿人的行走并有坐标

g=matrix(c(0,0,3,1,4,2,5,3,6,4,5,5,4,6,6,6,8,5,9,6)
  ,nrow=10,ncol=2,byrow= TRUE)

所以我的问题是: (1) 如何将此 2D 数据添加到 3D 图中并通过一条线连接所有点以描绘步行?它应该躺在地上。 (2) 如何在“步行”周围绘制正态分布?这应该是 3D。

非常感谢

更新:这个想法是将下一个练习中的概率也分配给第二个人的步行,然后计算他们在某个地方遇到的概率。

Update2:我可能不是很清楚我想要什么,所以我尽量做到更准确。正如 g 中的坐标所描绘的那样,步行只是一条粗略的线。它应该显示在地面上。我感兴趣的真正任务如下:这个人可能并不完全走在线上。然而,在任何点的概率由其到线的最短距离的正态函数(PDF)给出。所以我想在这条线上画一个普通的 PDF 倍数(可能是无限次)。最终的 3D 图可能看起来像一些山。这与我之前的问题有关,在该问题中我询问如何多次绘制普通 PDF,使其 3D 绘图看起来像 vulcano。

Update3:下面的答案没有向 Update2 显示结果,但它清楚地为原始问题的一部分提供了指导。因此,我将其标记为已解决。

【问题讨论】:

    标签: r plot 3d rgl


    【解决方案1】:

    这个怎么样。 (请注意,我将彩虹表面设为透明)。

    library(rgl)
    open3d()
    
    x <- seq(0, 10, length=100)
    y <- seq(0, 10, length=100)
    
    z = outer(x,y, function(x,y) dnorm(x,2.5,1)*dnorm(y,2.5,1))
    
    persp3d(x, y, z,col = rainbow(100),alpha=0.5)
    
    # now draw the line 
    #    note:
    #    -  the "add=T" parameter that appends it to the previous 3d-plot
    
    g=matrix(c(0,0,3,1,4,2,5,3,6,4,5,5,4,6,6,6,8,5,9,6)
             ,nrow=10,ncol=2,byrow= TRUE)
    
    lines3d(g[,1],g[,2],0,color="purple",add=T)
    

    产量:

    【讨论】:

    • 谢谢,这已经很接近了,但是我怎么能补充说正常的pdf是沿着这条线绘制的呢?正如我在开头所写的,这与我最近的另一篇文章有​​关。非常感谢您在这方面的帮助。
    • 所以你希望高度为零(就像你说的“在地面上”) - 或者你希望高度是 pdf 值,所以它在表面上?
    • 如果我不是很精确,我很抱歉。我想要“两者” :-) 话虽如此,这条线描绘了步行,应该在地上。其次,步行/坐标存在一些不确定性,这由正常的 PDF 表示,不应仅在单个点上,而应遵循步行/线。请让我也更新上面的文字。
    • 您似乎想在每个点计算一个新的 pdf(即随机游走者在几步之后的概率分布),然后以某种方式一次显示所有这些 pdf。虽然可以这样做,但计算成本高且有点复杂,而且显示可能难以理解。显示多个透明表面(而不是只显示一个)需要光线追踪方法。
    • 原来的问题很清楚,我回答的很清楚。我建议您将此标记为正确,然后根据您更复杂的要求提出另一个问题。
    猜你喜欢
    • 1970-01-01
    • 2018-05-25
    • 2015-01-01
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-29
    相关资源
    最近更新 更多