- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有如下地理数据(但数据量大得多):
library(tidyverse)
library(gganimate)
n <- 500
longitude <- runif(n)
latitude <- runif(n)
time <- round(runif(n, 0, 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 来使数据持续存在。这基本上非常非常接近我想要的。
问题在于,这里真正发生的是 gganimate 在数据点首次出现在 geom_point 下方后立即放置一个 shadow_mark
,然后在原始点消失时它慢慢变得可见。如果我只是想让点淡出但持续存在,这基本上是可以的(尽管淡入淡出过渡有点奇怪,因为原始的 alpha 和 shadow_mark
在淡出过程中在视觉上加在一起)。但它变成了一个更大的问题,因为有时我还需要调整点的大小。
如果我使用一个小于原始点的shadow_mark
,你可以看到问题:
anim2 <- 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 = 2)
animate(anim2, nframes = 100)
给出以下内容:
您可以看到较小的点出现而较大的点逐渐消失(这里为了简单起见我省略了同时调整大小,但在这种情况下问题仍然存在)。所以我想知道是否有一种方法可以在 gganimate 中“正确地”执行此操作,使得该点实际上只是消失但仍然存在,而 shadow_mark
只是在下面绘制并通过逐渐消失慢慢显露出来原点?
问题的原因是我最终想同时平滑exit_fade
和exit_shrink
,这样收缩后的最终大小与上例中的 shadow_mark
尺寸较小,然后该点在整个动画的其余部分一直保持较小的半淡化状态。
注意:我意识到我可以uncount
数据行并在数据中手动制作我自己的帧和转换,并允许点以这种方式持续存在,就像在其他讨论中answers .问题是我的真实数据集实际上非常大,像这样进行计数会导致数据集对于内存来说太大了。因此,如果存在的话,我更喜欢纯 gganimate 解决方案。
最佳答案
以下方法将数据集复制了两次,这确实会导致文件大小稍微膨胀,但可能不会像不计算那样出现问题。看看它是否适合您?
data <- data %>%
mutate(id = seq(1, n()), # add an ID column to original dataset,
type = "original",
size = 10, # specify initial size / alpha / any other aspect
alpha = 1) # to be changed during animation
rbind(data,
data %>% # create second version of the dataset,
mutate(type = "transiting", # with time lagged by the desired transition
time = time + 30, # amount (30 in the question's example),
size = size * 0.2, # & size / alpha / any other aspect defined
alpha = alpha * 0.1), # according to end state after transition;
data %>% # create third version of the dataset,
mutate(type = "persisting", # which should be identical to the second,
time = max(time) + 30, # except that the time is set to the max time
size = size * 0.2, # across all rows.
alpha = alpha * 0.1)) %>%
# pass this combined dataset to ggplot & animate as per normal with explicitly
# specified parameters for size / alpha / etc, & group aesthetic set to ID value.
# no need to specify exit_fade or shadow_mark now, as each point DOESN'T exit at all.
ggplot(aes(x = longitude, y = latitude, group = id,
size = size, alpha = alpha)) +
geom_point(colour = "red") +
transition_components(time) +
ggtitle("{frame_time}") + # optional; added to illustrate frame time explicitly
scale_size_identity() +
scale_alpha_identity()
关于r - 有没有办法让 geoms 褪色但坚持 gganimate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63913059/
在我的 POJO 中,我有这个: @Transient private int qtyMentee; 在我的 DAO 中我有这个查询: public List findQtyMentee(){
如果我正在编写的应用程序终止,我需要将当前位置存储到 iphone 的“磁盘”中。然后,当应用程序再次启动时,我想恢复这些信息。但是,CLLocation 坐标属性是只读的。 如何在程序调用之间保存此
这个问题有点来回,因为我已经了解了一些关于 unix 系统的 g++ 知识(抱歉,如果我把任何人搞砸了)。 对于我目前正在尝试完成的项目,我想获得 twitcurl使用 Xcode 和 OpenFra
我想在表格中显示用户的姓名以及本周发布的照片数量。 示例:用户 1 发布了 10 张照片,用户 2 发布了 20 张照片...... 所以我需要一个计数,但我不知道如何。 图片型号: public
我正在尝试保留具有@OneToMany 和@ManyToOne 关系的实体。 @OneToMany(mappedBy="customer", cascade=CascadeType.ALL, fetc
我有一个表单,我从另一个表中获取字段,例如,第一个字段是硬编码的,第二个字段是从另一个表中获取的,如果其他表有 10 条记录,则向用户显示 10 个新字段。我的问题是如何将这种数据插入表中。 我得到这
我一直在努力控制导入和导出,这样我就可以精简我的 JS 应用程序。我试过合并这些 Mozilla和 this Stack Overflow examples没有任何运气。 It looks like
我的数据库中的一个字段中包含以下文本: [quote:5a7b87febe="mr smith"]This is some text. This is more text on another lin
我正在使用 cling UPnP android 中的框架连接到支持 UPnP 的设备。我成功地创建了一个设备并浏览了网络中的可用设备。但对于三星电视在网络框架内没有任何反应。在这里我添加了 Rend
我正在制作一个问答网站,类似于此网站和 Yahoo answers。我有 3 个表 - smf_members、qa_questions 和 qa_answers。 在此查询中,我想从 qa_ques
阅读后this question - 它还提供了文档链接,我仍然对文档有疑问。 MDN:Date.parse A string representing an RFC2822 or ISO 8601
我有一个父实体客户端。该客户可以访问该网站并创建约会。这意味着约会是在客户反对的其他时间创建的。 我的问题是:如何将子对象添加到已持久化的父对象中?如果调用下面示例中的函数 addData1(),则会
我正在尝试创建气泡,重复几次后我的浏览器卡住了。这是我的代码。有人请帮助....我如何在不提出许多请求的情况下完成它。 看起来我的帖子主要是代码,但我为这个 Stackoverflow 添加了足够的细
我被这个 linq 查询困住了,我需要做的就是优化最后的价格计算,因为我得到了大约 1000 篇文章,而且销量很大,所以它变得很慢...... var result = from article in
我有一列用于对象创建 的时间,一列用于对象更新 的时间。当我创建并保留新对象时,我从 MySQL 收到错误: updated cannot be null. 我没有为它设置任何值,因为我希望 upda
我以前使用 git 没有任何问题,但突然间我无法推送 或克隆 任何东西。当我使用这个命令时,没有任何反应,甚至没有错误,所以我必须按 ctrl + c 或关闭 git 窗口。 我使用这个简单的命令来推
我似乎不知道下一步该做什么。我的目标是使用图像包中的 SubImage 函数从原始图像创建一个包含所有子图像的数组。我能够在 imageSplit() 函数中分割图像并通过 channel 传递给 i
我有一个 STM32L-Discovery 板,它有一个 STM32L152R8 微处理器。我很难让基本的事情发挥作用。 我看过ST给出的例子(电流消耗触摸传感器和温度传感器),我认为它们不太用户友好
这是一个散列,其中mysql列与散列的键相关,值与散列的值相关 {:jobID=>"1", :checkoutArtificateFolder=>"/cmf/new/build/Artifacts/
我有两个实体 @Entity @Table(name="parent") public class Parent { @Id String uuid; @ElementCollection
我是一名优秀的程序员,十分优秀!