R 使用ggplot和gganiminate的动画条形图
我有一个用ggplot创建的条形图,我想制作动画;基本情节是 我在网上对此进行了研究,并创建了以下代码:- 这里是一些Reprex数据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"),
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")