如何在R中制作一个动画,展示具有不同bin大小的直方图?

3

我想使用gganimate(),但找不到可行的解决方案。

最终我成功地创造了一些东西——使用animation包。我能够创建GIF和视频输出,但是它们都没有我期望的那么流畅或好。

输出非常不连贯——如果我想使用基本的"hist"函数显示20个不同的间隔,动画只显示了其中大约一半。您可以看到GIF遍历了所有的条形图数量,但每个步骤的图形都没有更新。

这是我的代码的GIF输出

library('ggplot2')
library('animation')

psd_1 <- data.frame(rnorm(5000, 100, 15))

colnames(psd_1)[1] <- "passengers"

ani.options(interval=.25, nmax=20)

a = saveGIF(
  {
    for (i in c(1:20)) {
      hist(psd_1$passengers, breaks=i, main=paste("Histogram with ",i, " bins"),
           xlab="Total Passengers")
    }
  }
  , movie.name="wodies.gif")

1
请注意,将break=设置为单个数字值并不能保证断点的数量(“该数字仅是建议”)。请查看?hist帮助页面。如果您需要确切数量的箱子,则需要显式设置断点。如需更多帮助,请提供一个可重现的示例 - MrFlick
软件包名称是 animation,不是 animate - Rui Barradas
你想要什么输出? - Cyrus Mohammadian
@MrFlick - 我已经更新了代码,展示了更完整的示例。输出会创建一个 GIF,但它并不显示直方图的每个迭代。 - SevenOvertimes
@CyrusMohammadian - 我在代码上面有一条GIF输出链接,我想要比那更流畅的东西。虽然您可以看到它通过每个迭代进行计数,但每个步骤直方图不会更新。 - SevenOvertimes
显示剩余2条评论
1个回答

3
如我在评论中提到的,如果你将一个单独的数字传递给breaks=,它并不能保证这个数量的断点,它只是一个建议。如果你想设置一个确切的数量,你需要传递一个断点向量。可以这样做:
a = saveGIF(
  {
    for (i in c(1:20)) {
      hist(psd_1$passengers, 
           breaks=seq(min(psd_1$passengers), max(psd_1$passengers), length.out=i), 
           main=paste("Histogram with ",i, " bins"), 
           xlab = "Total Passengers")  }
  }
  , movie.name = "wodies.gif")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接