问题描述
我有类似以下的地理数据(但是数据量大得多):
library(tidyverse)
library(gganimate)
n <- 500
longitude <- runif(n)
latitude <- runif(n)
time <- round(runif(n,100),1) %>% sort
data <- tibble(longitude,latitude) %>% arrange(longitude) %>% mutate(time = time)
我可以使用gganimate制作动画,如下所示:
anim1 <- ggplot(data,aes(x=longitude,y=latitude,group = time)) +
geom_point(color = "red",size = 10) +
transition_components(time,exit_length = 30) +
exit_fade() +
shadow_mark(color = "red",alpha = 0.1,size = 10)
animate(anim1,nframes = 100)
这将提供以下输出:
在这里,我既使用exit_fade
淡化点,也使用shadow_mark
设置alpha以使数据持久化。这基本上非常接近我想要的。
问题在于,这里真正发生的是,在数据点首次出现在geom_point下面之后,gganimate立即将shadow_mark
置于shadow_mark
上,然后在原始点逐渐消失的同时逐渐变得可见。如果我只想让该点淡入淡出但保持不变,那通常就可以了(尽管淡入淡出过渡有点怪异,因为原始和shadow_mark
的Alpha在淡入淡出时在视觉上相加了)。但这是一个更大的问题,因为有时我还需要调整点的大小。
如果我使用的anim2 <- ggplot(data,size = 2)
animate(anim2,nframes = 100)
小于原始点,则可以看到问题:
shadow_mark
其中给出以下内容:
您可以看到较小的点出现而较大的点逐渐消失(为简化起见,这里省略了同时调整大小,但是在这种情况下仍然存在问题)。因此,我想知道是否有一种方法可以在gganimate中“适当地”执行此操作,以使该点实际上只是淡化但持续存在,而没有exit_fade
刚被绘制在下面并通过原始点的淡入逐渐显示出来?
该问题的原因是,我最终希望同时平滑exit_shrink
和shadow_mark
,以使收缩后的最终尺寸与{{ 1}},然后该点在较小的半渐变状态下一直持续到动画的其余部分。
注意:我意识到我可以uncount
数据行,并在数据中手动制作自己的帧和过渡,并允许这些点以这种方式持久化,正如在其他answers。问题是我的实际数据集实际上非常大,并且进行这样的不计数会导致数据集对于内存而言太大。因此,如果有的话,我宁愿使用纯加尼加尼解决方案。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)