我发现,在使用动画的绘图表时,您需要为每个因素获得相同数量的观测值。含义->一个缺失的观察结果导致整个轨迹在动画图表的整个持续时间内都被丢弃。当您使用时间序列数据并且某些跟踪开始得比其他跟踪晚或结束时,这尤其成问题。除了为缺失值估算空值之外,还有其他解决方法吗?谢谢!
来自rstudio community的交叉发布
示例:
library(gapminder)
library(plotly)
library(dplyr)
#working example with no missings
gapminder %>%
group_by(year, continent) %>%
summarise(pop = mean(pop), gdpPercap = mean(gdpPercap), lifeExp = mean(lifeExp)) %>%
plot_ly( x = ~gdpPercap,
y = ~lifeExp,
size = ~pop,
color = ~continent,
frame = ~year,
text = ~continent,
hoverinfo = "text",
type = 'scatter',
mode = 'markers')
#filtering one row results in missing Africa trace for entirety of the plot
gapminder %>%
group_by(year, continent) %>%
summarise(pop = mean(pop), gdpPercap = mean(gdpPercap), lifeExp = mean(lifeExp)) %>%
filter(gdpPercap > 1253) %>%
plot_ly( x = ~gdpPercap,
y = ~lifeExp,
size = ~pop,
color = ~continent,
frame = ~year,
text = ~continent,
hoverinfo = "text",
type = 'scatter',
mode = 'markers')
答案 0 :(得分:0)
似乎没有直接的方法可以解决此问题。间接地,可以通过使用ggplot + ggplotly而不是plotly(see this answer)解决数据帧中NA的问题。此外,当我的示例中存在不完整的数据集时,可以使用tidyverse程序包中的完整函数来解决该问题,而不是在某些行中使用NA。
查看解决方案:
p <- 差距%>%
group_by(年,大陆)%>%
摘要(pop = 平均值(pop),gdpPercap =平均值(gdpPercap),lifeExp =平均值(lifeExp))%>%
过滤器(gdpPercap> 1253)%>%
完成(大陆,年)%>%
ggplot(aes(gdpPercap,lifeExp,color = continent))+
geom_point(aes(frame = year))+ theme_bw()ggplotly(p)
话虽这么说,但我不喜欢在生产环境中使用变通方法,所以请随时向我介绍绘图动画功能的发展。