gganimate 中 shadow_mark() 的问题
Issue with shadow_mark() in gganimate
我使用 gganimate 创建了一个 gif,显示 NBA 球员常规赛场均得分,并将其与季后赛场均得分进行比较。除了 shadow_mark()
的图形问题外,我一切正常。 gif从季后赛开始,过渡到常规赛标记,然后再过渡回季后赛标记。
我希望 shadow_mark()
始终以 50% 的不透明度在图表上保留季后赛标记,就像我现在拥有的那样。我不希望常规赛标记留在图表上,但我不知道如何摆脱它。我在 shadow_mark()
中尝试了 past = TRUE
和 future = FALSE
等的各种组合,但它似乎并没有解决它。我也试过 exclude_layer = 1
但那会删除两个阴影而不是只删除 1.
这是我现在的动图。下面是用于创建它的代码。
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
如能提供解决此问题的任何帮助,我们将不胜感激!
您想做的是创建一个新变量,该变量等于每个球员在常规赛中的 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)
希望对您有所帮助
我使用 gganimate 创建了一个 gif,显示 NBA 球员常规赛场均得分,并将其与季后赛场均得分进行比较。除了 shadow_mark()
的图形问题外,我一切正常。 gif从季后赛开始,过渡到常规赛标记,然后再过渡回季后赛标记。
我希望 shadow_mark()
始终以 50% 的不透明度在图表上保留季后赛标记,就像我现在拥有的那样。我不希望常规赛标记留在图表上,但我不知道如何摆脱它。我在 shadow_mark()
中尝试了 past = TRUE
和 future = FALSE
等的各种组合,但它似乎并没有解决它。我也试过 exclude_layer = 1
但那会删除两个阴影而不是只删除 1.
这是我现在的动图。下面是用于创建它的代码。
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
如能提供解决此问题的任何帮助,我们将不胜感激!
您想做的是创建一个新变量,该变量等于每个球员在常规赛中的 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)
希望对您有所帮助