我想在R中创建一个动画条形图,以显示每个玩家和游戏日的得分目标。
下面我创建了虚构数据:
df <- data.frame(player = c("Aguero", "Salah", "Aubameyang", "Kane", "Aguero", "Salah", "Aubameyang", "Kane", "Aguero", "Salah", "Aubameyang", "Kane"),
team = c("ManCity", "Liverpool", "Arsenal", "Tottenham", "ManCity", "Liverpool", "Arsenal", "Tottenham", "ManCity", "Liverpool", "Arsenal", "Tottenham"),
gameday = c(1,1,1,1,2,2,2,2,3,3,3,3),
goals = c(0,1,2,0,1,1,3,1,2,1,3,2),
stringsAsFactors = F)
基于我想创建动画条形图的数据。条形图应在每个游戏日进行动画处理,并在该图上显示最佳得分手。
下面,我为我的想法创建了一个简单的可视化文件。
ggplot(data=df, aes(x=reorder(Player, Goals), y=Goals, fill=Team)) +
geom_bar(stat="identity") +
theme(legend.position = "none", axis.text.y=element_blank(),
axis.title.y=element_blank()) +
geom_text(aes(label=Player), vjust=1, hjust=-0.1, color="white", size=3.5) +
coord_flip()
条形图的灵感来自这样的视频: https://www.youtube.com/watch?v=U8CpdQnWH7Y
是否可以为此创建动画条形图?
非常感谢您的帮助!
答案 0 :(得分:1)
是的,要制作ggplots动画,您需要使用gganimate软件包。您可以通过搜索[r][ggplot2] animate questions来找到它,但是由于最重要的答案并不是最新的语法,因此这里有一些代码:
library("ggplot2")
library("gganimate")
ggplot(data=df, aes(x=reorder(Player, Goals), y=Goals, fill=Team)) +
geom_bar(stat="identity") +
theme(legend.position = "none", axis.text.y=element_blank(),
axis.title.y=element_blank()) +
geom_text(aes(label=Player), vjust=1, hjust=-0.1, color="white", size=3.5) +
coord_flip() +
## gganimate code
labs(title = 'Gameday: {frame_time}') +
transition_time(gameday) +
ease_aes('linear')
(代码未经测试,但应该可以使用)