R 使用ggplot和gganiminate的动画条形图

R 使用ggplot和gganiminate的动画条形图,r,animation,ggplot2,gganimate,R,Animation,Ggplot2,Gganimate,我有一个用ggplot创建的条形图,我想制作动画;基本情节是 我在网上对此进行了研究,并创建了以下代码:- 这里是一些Reprex数据 Data <- as.data.frame(rbind(c("11 Mar'", "Male", "20-30"), c("11 Mar'", "Male", "20-30"),

我有一个用ggplot创建的条形图,我想制作动画;基本情节是

我在网上对此进行了研究,并创建了以下代码:-

这里是一些Reprex数据

 Data <- as.data.frame(rbind(c("11 Mar'", "Male", "20-30"),
                                                c("11 Mar'", "Male", "20-30"),
                                                c("11 Mar'", "Female", "20-30"),
                                                c("12 Mar'", "Female", "50-60"),
                                                c("12 Mar'", "Female", "10-20"),
                                                c("12 Mar'", "Male", "60-70"),
                                                c("13 Mar'", "Female", "20-30"),
                                                c("13 Mar'", "Female", "60-70"),
                                                c("13 Mar'", "Male", "60-70"),
                                                c("13 Mar'", "Male", "60-70"),
                                                c("13 Mar'", "Female", "20-30"),
                                                c("14 Mar'", "Female", "70-80"),
                                                c("14 Mar'", "Female", "70-80"),
                                                c("14 Mar'", "Male", "40-50")))
                    colnames(Data) <- c("Date", "Sex", "AgeGroup")
不幸的是,我没有得到期望的输出-数据没有累计显示 相反,绘图的每一帧都会刷新,只显示一天的结果。我以为那是geom_酒吧 总是在几天内累积数据,但似乎没有-我甚至有“累积=真” 在ggplot调用中,但结果仍然如下所示

有人能给我指出正确的方向吗?

我已经找到了。 我通过复制前一个日期的行并添加到当前日期等方式复制了数据集。因此,频率将是累积的。我无法在R中完成。但是,数据将如下所示:

Data <- structure(list(Date = c("11 Mar'", "11 Mar'", "11 Mar'", "12 Mar'", 
"12 Mar'", "12 Mar'", "12 Mar'", "12 Mar'", "12 Mar'", "13 Mar'", 
"13 Mar'", "13 Mar'", "13 Mar'", "13 Mar'", "13 Mar'", "13 Mar'", 
"13 Mar'", "13 Mar'", "13 Mar'", "13 Mar'", "14 Mar'", "14 Mar'", 
"14 Mar'", "14 Mar'", "14 Mar'", "14 Mar'", "14 Mar'", "14 Mar'", 
"14 Mar'", "14 Mar'", "14 Mar'", "14 Mar'", "14 Mar'", "14 Mar'"
), Sex = c("Female", "Male", "Male", "Female", "Female", "Female", 
"Male", "Male", "Female", "Female", "Female", "Female", "Female", 
"Female", "Female", "Male", "Male", "Male", "Male", "Male", "Female", 
"Female", "Female", "Female", "Female", "Female", "Female", "Female", 
"Male", "Male", "Female", "Male", "Male", "Male"), AgeGroup = c("20-30", 
"20-30", "20-30", "10-20", "20-30", "50-60", "20-30", "20-30", 
"60-70", "10-20", "20-30", "20-30", "20-30", "50-60", "60-70", 
"20-30", "20-30", "60-70", "60-70", "60-70", "10-20", "20-30", 
"20-30", "20-30", "50-60", "60-70", "70-80", "70-80", "20-30", 
"20-30", "40-50", "60-70", "60-70", "60-70")), class = c("spec_tbl_df", 
"tbl_df", "tbl", "data.frame"), row.names = c(NA, -34L), spec = structure(list(
    cols = list(Date = structure(list(), class = c("collector_character", 
    "collector")), Sex = structure(list(), class = c("collector_character", 
    "collector")), AgeGroup = structure(list(), class = c("collector_character", 
    "collector"))), default = structure(list(), class = c("collector_guess", 
    "collector")), skip = 1), class = "col_spec"))

请将个人计数更新为样本数据,并添加gganimate代码。顺便说一句,你可以尝试用年龄组和性别的每个组合的累积和创建一个新变量,并用它绘图。对不起,我不明白你所说的“将个体计数更新到样本数据”是什么意思。。。另外,gganimate代码被附加到golly调用的末尾-从“transition_states(Date…)”开始。对不起,我误解了您的数据集,好像它应该在每个横截面中都有计数。不,我意识到频率范围在0和2之间。
Data <- structure(list(Date = c("11 Mar'", "11 Mar'", "11 Mar'", "12 Mar'", 
"12 Mar'", "12 Mar'", "12 Mar'", "12 Mar'", "12 Mar'", "13 Mar'", 
"13 Mar'", "13 Mar'", "13 Mar'", "13 Mar'", "13 Mar'", "13 Mar'", 
"13 Mar'", "13 Mar'", "13 Mar'", "13 Mar'", "14 Mar'", "14 Mar'", 
"14 Mar'", "14 Mar'", "14 Mar'", "14 Mar'", "14 Mar'", "14 Mar'", 
"14 Mar'", "14 Mar'", "14 Mar'", "14 Mar'", "14 Mar'", "14 Mar'"
), Sex = c("Female", "Male", "Male", "Female", "Female", "Female", 
"Male", "Male", "Female", "Female", "Female", "Female", "Female", 
"Female", "Female", "Male", "Male", "Male", "Male", "Male", "Female", 
"Female", "Female", "Female", "Female", "Female", "Female", "Female", 
"Male", "Male", "Female", "Male", "Male", "Male"), AgeGroup = c("20-30", 
"20-30", "20-30", "10-20", "20-30", "50-60", "20-30", "20-30", 
"60-70", "10-20", "20-30", "20-30", "20-30", "50-60", "60-70", 
"20-30", "20-30", "60-70", "60-70", "60-70", "10-20", "20-30", 
"20-30", "20-30", "50-60", "60-70", "70-80", "70-80", "20-30", 
"20-30", "40-50", "60-70", "60-70", "60-70")), class = c("spec_tbl_df", 
"tbl_df", "tbl", "data.frame"), row.names = c(NA, -34L), spec = structure(list(
    cols = list(Date = structure(list(), class = c("collector_character", 
    "collector")), Sex = structure(list(), class = c("collector_character", 
    "collector")), AgeGroup = structure(list(), class = c("collector_character", 
    "collector"))), default = structure(list(), class = c("collector_guess", 
    "collector")), skip = 1), class = "col_spec"))
ggplot(Data, aes(x = AgeGroup, fill = Sex, frame = Date)) + 
  geom_bar(position = position_dodge(preserve = "single")) +
  scale_fill_manual(values = c("lightblue", "darkblue"), drop = TRUE) +
  xlab("\nAge Group") + ylab("\nIndividuals") +
  ggtitle("\nMarch - April 2020") + 
  scale_y_discrete(limits= c(2,4,6,8)) +
  transition_states(Date, transition_length = 4, state_length = 1) + shadow_mark() +
  enter_grow() + 
  exit_fade(alpha = 1)+
  labs(title = 'Date: {closest_state}',  
       subtitle  =  "Age and Gender distribution",
       caption  = "data as of 0945 10 Apr 2020")