通过gganimate的动画条形图:view_follow&coord_flip冲突

问题描述 投票:3回答:1

我想用gganim包装来制作动画条形图。条形图的坐标应通过coord_flip(即水平条)翻转,x轴应根据条形长度通过view_follow制作。

请考虑以下示例数据:

# Create example data
df <- data.frame(ordering = c(rep(1:3, 2), 3:1, rep(1:3, 2)),
                 year = factor(sort(rep(2001:2005, 3))),
                 value = round(runif(15, 0, 100)),
                 group = rep(letters[1:3], 5))

如果我创建一个没有coord_flip的动画条形图,一切正常:

library("gganimate")
library("ggplot2")

# Create animated ggplot without coord_flip
ggp <- ggplot(df, aes(x = ordering, y = value)) +
  geom_bar(stat = "identity", aes(fill = group)) +
  transition_states(year, transition_length = 2, state_length = 0) +
  view_follow(fixed_x = TRUE) # +
  # coord_flip()
ggp

enter image description here

但是,如果我添加coord_flip,轴没有任何理由从一侧移动到另一侧:

# Create animated ggplot with coord_flip
ggp2 <- ggplot(df, aes(x = ordering, y = value)) +
  geom_bar(stat = "identity", aes(fill = group)) +
  transition_states(year, transition_length = 2, state_length = 0) +
  view_follow(fixed_x = TRUE) +
  coord_flip()
ggp2

enter image description here

问题:如何翻转条形图的轴并启用灵活的轴?

r ggplot2 bar-chart axis-labels gganimate
1个回答
1
投票

您可能需要考虑ggstance包中的geom_barh,而不是geom_bar + coord_flip

library(ggstance)

ggplot(df, aes(y = ordering, x = value)) +
  geom_barh(stat = "identity", aes(fill = group)) +
  transition_states(year, transition_length = 2, state_length = 0) +
  view_follow(fixed_y = TRUE)

animated plot

© www.soinside.com 2019 - 2024. All rights reserved.