我使用gganimate创建了一个gif,可以显示NBA球员每场常规赛季的得分,并将其与季后赛中他们每场的得分进行比较。除了shadow_mark()
的图形问题之外,我一切正常。 gif从季后赛开始,过渡到常规赛季标记,然后过渡到季后赛标记。
我希望shadow_mark()
始终以50%的不透明度将季后赛标记保留在图表上,就像我现在所拥有的那样。我不希望常规赛的比赛记录保持不变,但我不知道如何摆脱它。我在past = TRUE
中尝试了future = FALSE
和shadow_mark()
等的各种组合,但似乎没有解决。我也尝试过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
任何有关如何解决此问题的帮助将不胜感激!
答案 0 :(得分:0)
您想做的是创建一个新变量,该变量等于常规赛季中每个球员的PPG。该变量将成为您的静态透明点。原始变量是要转换的变量。
以下是该Viz的代码:
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)
希望有帮助