r - 将 gganimate 与 geom_point 和 geom_line 一起使用
问题描述
在这里使用 nfl 数据.. 第一次尝试 gganimate ...尝试使用 geom_point 和 geom_line 但 geom_line 不会出现..
数据框在这里..
week = c(1,2,3,4,5,6,8,9,10,11,12,13,14,15,16,17)
plays= c(9,10,5,3,4,4,3,5,6,5,11,12,6,11,7,3)
mean_epa= c(.67, .27, -.5, -1.09, -.3, .68, -.72, -.32, 1.03, 1.05, .56, .17, -.61, -.05, -.14, 1.5)
CLEdrive1b <- data.frame(week,plays,mean_epa)
在周变量内,缺少 7(因为布朗队没有第 7 周的比赛)......不确定这是否会导致问题?
我在下面的第一次尝试
p <- ggplot(CLEdrive1b, aes(x=as.factor(week),y=mean_epa)) +
theme_minimal() +
geom_point(aes(group = seq_along(week)), color = "orange", size = 4) +
geom_line(alpha = 0.5)+
transition_reveal(week)+
geom_text(aes(label = mean_epa))+
xlab("Week") +
ylab("EPA/Play") +
labs(title="Browns Opening Drives",
subtitle = "EPA/Drive by Week",
caption="Data from nflscrapR")+
theme(axis.title = element_text(size = 10),
axis.text = element_text(size = 9),
plot.title = element_text(size = 15),
plot.subtitle = element_text(size = 10),
plot.caption = element_text(size = 8))
animate(p)
我试过的替代方法..
pi <- ggplot(CLEdrive1b, aes(week,y=mean_epa)) +
theme_minimal() +
geom_point(aes(group = seq_along(week)), color = "orange", size = 4) +
geom_line(alpha = 0.5)+
transition_reveal(week)+
geom_text(aes(label = mean_epa))+
xlab("Week") +
ylab("EPA/Play") +
labs(title="Browns Opening Drives",
subtitle = "EPA/Drive by Week",
caption="Data from nflscrapR")+
theme(axis.title = element_text(size = 10),
axis.text = element_text(size = 9),
plot.title = element_text(size = 15),
plot.subtitle = element_text(size = 10),
plot.caption = element_text(size = 8))
animate(pi)
从 x 变量(周)中删除 as.factor .. 并且 geom_line 出现!但是 x 轴丢失了我正在寻找的标签,并且 geom_text 停止执行上面的操作..
感谢您花时间提供帮助...
解决方案
问题在于,当将其转换为因子时,ggplot 不再“知道”如何对 week 变量进行分组,也不再连接观察结果。添加aes(group = 1)
到您的geom_line
就是您所需要的。
library(gganimate)
#> Loading required package: ggplot2
library(ggplot2)
week = c(1,2,3,4,5,6,8,9,10,11,12,13,14,15,16,17)
plays= c(9,10,5,3,4,4,3,5,6,5,11,12,6,11,7,3)
mean_epa= c(.67, .27, -.5, -1.09, -.3, .68, -.72, -.32, 1.03, 1.05, .56, .17, -.61, -.05, -.14, 1.5)
CLEdrive1b <- data.frame(week,plays,mean_epa)
p <- ggplot(CLEdrive1b, aes(x=as.factor(week),y=mean_epa)) +
geom_point(aes(group = seq_along(week)), color = "orange", size = 4) +
geom_line(alpha = 0.5, aes(group = 1))+
transition_reveal(week)+
geom_text(aes(label = mean_epa))
animate(p)
由reprex 包于 2020-02-03 创建(v0.3.0)
推荐阅读
- typescript - 在 Typescript 中键入键值对对象并保存对象的键
- python - 'numpy.float64' 对象不可迭代——独立工作但不在 for 循环中
- ios - 根据图像高度对位于uitableviewcell中的collectionviewcell设置动态高度约束
- python - 如何在大熊猫组之间比较和分组配对值
- c++ - C++ 中的一项操作
- azure - 将 CI 和 CD 集成在一起 Azure Devops
- ios - WkWebView 无法重置 Cookie
- prolog - SWISH Prolog 阶乘误差
- c# - 快速在搜索文本框中键入以更改数据网格的行选择时引发异常
- scala - 使用 ForeachWriter 打印行