【问题标题】:Issue with shadow_mark() in gganimategganimate 中的 shadow_mark() 问题
【发布时间】:2019-07-13 21:44:19
【问题描述】:

我使用 gganimate 创建了一个 gif,显示 NBA 球员常规赛场均得分,并将其与他们在季后赛中的场均得分进行比较。除了shadow_mark() 出现图形问题外,我一切正常。 gif 从季后赛开始,过渡到常规赛标记,然后过渡到季后赛标记。

我希望shadow_mark() 始终以 50% 的不透明度保持季后赛标记,就像我现在拥有的那样。我不希望常规赛标记留在图表上,但我不知道如何摆脱它。我在shadow_mark() 中尝试了past = TRUEfuture = FALSE 等的各种组合,但似乎并没有解决它。我也尝试过exclude_layer = 1,但随后删除了两个阴影,而不仅仅是 1。

这是我现在的 gif。下面是用于创建它的代码。

j <- ggplot(nba2, aes(x = PPG, y = Player)) +
  geom_point(shape = 21, stroke = 1, aes(fill = Tm, size = 2)) +
  theme(legend.title = element_blank(), legend.position = 'none') +
  xlab("Points Per Game") +
  labs(caption = 'Data via basketball-reference.com')
plot(j)
anim <- j +
  transition_states(Playoff_or_reg,
                    transition_length = 2,
                    state_length = 2, 
                    wrap = TRUE) +
  shadow_mark(past = TRUE, future = FALSE, alpha = 0.5) +
ggtitle("{closest_state}")
anim

任何有关如何解决此问题的帮助将不胜感激!

【问题讨论】:

标签: r ggplot2 gganimate


【解决方案1】:

您要做的是创建一个新变量,该变量等于每个球员在常规赛中的 PPG。该变量将成为您的静态、透明点。原始变量是要转换的变量。

该可视化项的代码如下所示:

df %>% 
  ggplot(aes(x = Player, y = PPG, color = Tm, fill = Tm)) + 
  geom_point(size = 4.5, shape = 21, alpha = 1, stroke = 1) + 
  geom_point(size = 4.5, shape = 21, alpha = .2,  stroke = 1,  aes(fill = Tm, color = Tm, x = Player, y = newPPG)) +
  coord_flip() + 
  theme(legend.position = 'none') +
  transition_states(
    Playoff_or_reg,
    transition_length = 1,
    state_length = 2) 

希望有帮助

【讨论】:

  • 我一直在 nba reddit 上看到你的作品!我不敢相信你回答了大声笑,但是是的,这正是我想要的,谢谢,我很感激!
  • 正确。乐于助人
猜你喜欢
  • 2016-06-14
  • 2019-02-19
  • 1970-01-01
  • 2019-08-02
  • 1970-01-01
  • 1970-01-01
  • 2016-09-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多