R中的动画直方图

Posted

技术标签:

【中文标题】R中的动画直方图【英文标题】:Animate Histograms in R 【发布时间】:2021-11-28 17:48:31 【问题描述】:

我正在尝试在 R 中对直方图进行动画处理。我创建了以下数据集:

   library(ggplot2)
library(gganimate)

a = abs(rnorm(100,10,10))
b = abs(rnorm(100,10,10))
i = 1
c = data.frame(a,b,i)

a = abs(rnorm(100,10,10))
b = abs(rnorm(100,10,10))
i = 2
d = data.frame(a,b,i)

a = abs(rnorm(100,10,10))
b = abs(rnorm(100,10,10))
i = 3
e = data.frame(a,b,i)

#data
g = rbind(c,d,e)

我能够在基础 R 和 ggplot 中制作静态直方图:

myplot1 = plot(g$a, type = "h")


myplot2 = ggplot(g, aes(x=a)) + 
  geom_histogram(binwidth=1)

问题是当我尝试为这些图表制作动画时(这些是 3 个图表:i = 1,2,3):

#first attempt
animateplot <- myplot1 + transition_time(i)

animateplot

NULL

#second attempt

anim <- myplot2 + transition_manual(g$i) +
  ease_aes("linear") +
  enter_fade() +
  exit_fade()

anim

NULL

谁能告诉我如何为这些图表制作动画并将动画保存为 gif 或 html 文件?

谢谢!

【问题讨论】:

【参考方案1】:
ggplot(g, aes(x=a)) + 
  geom_histogram(binwidth=1) +
  transition_states(i)

或使用更多选项的变体:

# alternative fake data
g <- data.frame(a = c(rnorm(500,10,5), rnorm(2000, 20, 30), rnorm(180, 50, 2)),
                i = c(rep(1, 500), rep(2, 2000), rep(3, 180)))

animate(
  ggplot(g, aes(x=a)) + 
  geom_histogram(binwidth=1) +
  transition_states(i, state_length = 0.2) +
  labs(title = "Group: closest_state"),
  fps = 25)

【讨论】:

@Jon Spring:非常感谢您的回答!是否可以在基础 R 中为图形设置动画?例如myplot1 = plot(g$a, type = "h") towardsdatascience.com/… 我不知道如何单独使用基础 R 进行动画处理,但我认为您可以使用 animation 包为基础 R 图形设置动画。您还可以查看 tweenr 包来帮助在步骤之间进行插值。 谢谢!如果你有时间,你能看看这个问题吗? ***.com/questions/69503597/… 谢谢!

以上是关于R中的动画直方图的主要内容,如果未能解决你的问题,请参考以下文章

R中的部分颜色直方图

将密度曲线拟合到R中的直方图

R创建两个变量的直方图

R中的堆叠直方图填充不堆叠

R中的着色直方图

R语言 直方图