有什么方法可以使几何消失,但会持续变化吗?

问题描述

我有类似以下的地理数据(但是数据量大得多):

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)

这将提供以下输出:

enter image description here

在这里,我既使用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

其中给出以下内容:

enter image description here

您可以看到较小的点出现而较大的点逐渐消失(为简化起见,这里省略了同时调整大小,但是在这种情况下仍然存在问题)。因此,我想知道是否有一种方法可以在gganimate中“适当地”执行此操作,以使该点实际上只是淡化但持续存在,而没有exit_fade刚被绘制在下面并通过原始点的淡入逐渐显示出来?

该问题的原因是,我最终希望同时平滑exit_shrinkshadow_mark,以使收缩后的最终尺寸与{{ 1}},然后该点在较小的半渐变状态下一直持续到动画的其余部分。

注意:我意识到我可以uncount数据行,并在数据中手动制作自己的帧和过渡,并允许这些点以这种方式持久化,正如在其他answers。问题是我的实际数据集实际上非常大,并且进行这样的不计数会导致数据集对于内存而言太大。因此,如果有的话,我宁愿使用纯加尼加尼解决方案。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)