R

时间:2019-02-28 10:37:28

标签: r animation ggplot2 plot bar-chart

我想在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()

Broad idea of the bar plot

条形图的灵感来自这样的视频: https://www.youtube.com/watch?v=U8CpdQnWH7Y

是否可以为此创建动画条形图?

非常感谢您的帮助!

1 个答案:

答案 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')

(代码未经测试,但应该可以使用)