【问题标题】:How can I recreate this 3d histogram?如何重新创建这个 3d 直方图?
【发布时间】:2012-11-14 19:08:46
【问题描述】:

我说的是这张图:

问题:

这是 R,不是 Matlab 对吗?在页面下方,它说它是用 R.... 制作的。

我该怎么做?我的意思是,我怎样才能用这个先进的绿色表面和这个网格创建这样一个 3d 散点图?我现在如何制作简单的散点图和 3d 散点图,但我怎样才能创建如此高级的图片呢?这是哪个包?

我想将它包含在这张图片应该自动旋转的论文中。我知道如何将它包含到我的 tex 分发中,但因此我需要单个 png。所以例如1000 张我制作动画的单张图片。但是我怎样才能用 R 得到那些呢?我需要旋转它,然后将每个小旋转保存为图形文件。

非常感谢您的帮助,我最大的问题是创建此图形(包?)以及如何使其旋转(r 代码?)

【问题讨论】:

  • 看起来他们修复了 rgl 包以转储 .png 文件。上次我尝试这个包时,它会在屏幕上显示图形(我可以旋转它、放大/缩小等),但它不会将图像转储到文件中。看起来新版本(0.92.894 2012-10-22)修复了这个问题。
  • 迁移此问题时,@nico 的评论丢失了。这是他的链接:stackoverflow.com/questions/3979240/… 这是我上面评论中的链接:stackoverflow.com/questions/4543272/…

标签: r 3d rotation data-visualization rgl


【解决方案1】:
  1. 要创建此图,您可以查看persp 函数。您可以更改参数以旋转图形。这是一个演示:

    require(grDevices) # for trans3d
    x <- seq(-10, 10, length= 30)
    y <- x
    f <- function(x,y) { r <- sqrt(x^2+y^2); 10 * sin(r)/r }
    z <- outer(x, y, f)
    z[is.na(z)] <- 1
    persp(x, y, z, theta = 90, phi = 30, expand = 0.5, col = "lightgreen")
    

当更改theta = 30

persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "lightgreen")

  1. 对于颜色,您可以输入colors() 以查看您可以使用什么颜色。目前,我发现lightgreen 可能是您想要的最接近的颜色。

【讨论】:

  • 好的,首先:非常感谢您的回答。但我还有更多问题: 1. 我需要保存不同的内容,例如png 文件具有不同的角度(不同的旋转),以便我可以将它们加入电影,我可以用 rgl 包做到这一点吗? @liuminzhao theta 是左右的,所以 phi 是上下的?我想将单个小旋转步骤保存为图片并将它们加入电影/动画中。我该怎么做?我也没有函数,我有经验数据,例如我想要一个 Vega 的 Black Scholes Plot 取决于资产价格和到期时间。再次感谢您的帮助!
  • 哦,还有一个问题:我怎样才能拥有花哨的颜色,极端值是红色,然后平滑的颜色变为例如蓝色表示低值?所以不是离散的变化而是连续的?非常感谢@bill_080 和 liuminzhao
  • 1.不熟悉rgl 包。 2. 我认为phi 是这样的。 3. 您可以尝试使用for 循环绘制一堆png 并将它们制作成gif?试试animation 包? 4.我认为经验数据很好,一旦你有z值对应于它的坐标(x, y)
  • 对于颜色,请查看help(persp)。在示例 4 中,# (4) 对应于 z 值的表面颜色。这就是你要找的吗?
  • 还可以查看 R 中的动画包。这与 ImageMagick 之类的程序有关,可以轻松将图像转换为电影或动画 gif。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-02
  • 2019-01-28
  • 2017-07-27
  • 1970-01-01
  • 1970-01-01
  • 2011-06-21
  • 2018-04-16
相关资源
最近更新 更多