- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下数据框:
# Seed RNG
set.seed(33550336)
# Create data frame
df <- data.frame(x = runif(100),
y = runif(100),
t = runif(100, min = 0, max = 10))
我想将出现和消失的点(即 x
和 y
坐标)绘制为 t
的函数。 gganimate
非常棒,所以我使用了它。
# Load libraries
library(gganimate)
library(ggplot2)
# Create animation
g <- ggplot(df, aes(x = x, y = y))
g <- g + geom_point(colour = "#FF3300", shape = 19, size = 5, alpha = 0.25)
g <- g + labs(title = 'Time: {frame_time}')
g <- g + transition_time(t)
g <- g + enter_fade() + exit_fade()
animate(g, fps = 1)
此代码产生以下结果:
有几件事我不喜欢。
enter_fade
和 exit_fade
是这些点会淡入 View ,然后退出。显然情况并非如此,但是我如何实现这个结果呢? {frame_time}
进行四舍五入,以便当点以 t
的分数淡入和淡出时,实际时间 t
> 将显示一个整数。如果frame_time
是一个常规变量,那么使用bquote
和round
之类的东西就足够简单了,但情况似乎并非如此。如何舍入标题中的 frame_time
? 最佳答案
这是一种相对手动的方法,它依赖于事先进行更多准备并将其输入到 gganimate
中。我想看看是否有更简单的方法可以在 gganimate
中更自动地执行此操作。
首先,我为要显示的每个帧制作数据帧的副本。然后,我计算当前查看的时间 (time
) 与我想要显示每个数据点的 t
之间的差异。我使用 cos
来处理缓入和缓出,以便使用 display
描述给定时间的每个点的外观。在 ggplot 调用中,我将 alpha 和大小映射到 display
,并使用 transition_time(time)
在帧中移动。
# Create prep table
fade_time = 1
frame_count = 100
frames_per_time = 10
df2 <- map_df(seq_len(frame_count), ~df, .id = "time") %>%
mutate(time = as.numeric(time)/frames_per_time,
delta_norm = (t - time) / fade_time,
display = if_else(abs(delta_norm) > 1, 0, cos(pi / 2 * delta_norm)))
# Create animation
g <- ggplot(df2, aes(x = x, y = y, alpha = display, size = display))
g <- g + geom_point(colour = "#FF3300", shape = 19)
g <- g + scale_alpha(range = c(0, 1)) + scale_size_area(max_size = 5)
g <- g + labs(title = "{round(frame_time, 1)}")
g <- g + transition_time(time)
animate(g)
关于gganimate 的舍入帧时间和平滑过渡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53119822/
有没有办法将使用 ffmmeg_renderer 或 av_renderer 制作的电影保存为单独的文件?我总是将主题作为数据嵌入到 html 文件中。 最佳答案 使用来自@Roman 的示例,我将使
我有以下数据框: # Seed RNG set.seed(33550336) # Create data frame df 将显示一个整数。如果frame_time是一个常规变量,那么使用bquot
几天来我一直在努力解决这个问题,但我不明白我错过了什么。 gganimate 似乎没有在帧之间添加任何过渡。 我正在使用 Tour de France dataset from the tidytue
是否可以在一个动画循环后停止? 动画应执行到去年 2021 年,然后停止显示所有条形图! 这是一个使用 gganimate 的条形动画示例: library(tidyverse) library(gg
我想将我的数据的另一列值插入gganimate动画标题中。 例如,这里的状态级别变量是x,我想添加到标题变量y: df 1 1 a 2 2 a 3 3 b
我有以下生成静态图表的 R 脚本 library(ggplot2) library(dplyr) library(tidyr) library(stringr) library(gta
是否可以在 gganimate 循环之间添加暂停?我知道我们可以使用 interval 设置帧之间的间隔,但是有没有办法在循环回第一帧之前在最后一帧暂停? 将最终帧的多个副本插入到数据中的最佳方法是吗
我正在尝试使用 gganimate 绘制一段时间内 NHL 前 3 名得分手的图。目前,我有一个柱形图,其中 x 轴显示球员姓名,y 轴显示每个球员的进球数。这是我所拥有的静态版本: library(
我有一个如下所示的数据框: head(newnolarank) lon lat week b 1 -90.06445 29.97121 1 9 2 -90.06704 29.9
遵循源代码 Here 。我正在尝试用我的数据复制它。我有一个时间序列数据,我在 y 轴上绘制事件和非事件数字。这是我的示例数据结构: df <- tibble::tribble( ~Date, ~
我已经解析了电子游戏《反恐精英》中手榴弹 throw 的一些数据。下面的示例数据显示我有关于手榴弹从哪里 throw 、手榴弹爆炸的位置以及何时 throw 手榴弹的位置。 df % # Add
我正在尝试使用 gganimate 绘制一段时间内 NHL 前 3 名得分手的图。目前,我有一个柱形图,其中 x 轴显示球员姓名,y 轴显示每个球员的进球数。这是我所拥有的静态版本: library(
我第一次尝试 gganimate 包,但在处理缺失值 (NA) 时遇到了问题。如果我的问题很微不足道,但我找不到任何解决方案,我深表歉意。 这是我正在尝试做的事情的可重现示例: # Load libr
我正在使用 gganimate。假设我有这个 MWE: library(ggplot2) library(gganimate) ggplot(airquality, aes(Day, Temp)) +
使用 gganimate 从 ggplot 制作动画时,我需要设置较低的速度以允许人们读取数据。 阅读文档(很难找到选项)似乎“nframes”是正确的设置。但我不能减慢动画或设置持续时间。两种方法中
以下两行代码,取自 script ,做我认为他们应该做的;也就是使用之前生成的ggplot文件——gganim——在Rstudio的查看器(第一行)中创建一个动画,并将最后一个动画保存到我mac上的g
我正在尝试显示随着时间的推移构建的直方图。它将从 1952 年的数据开始,然后每年更新直方图,并不断增长。 路径似乎是 gganimate,我认为使用 transition_reveal随着时间的推移
我在设置动画时无法设置绘图的宽度。 因此,如果我使用库 gapminder 制作静态图,代码如下: library(ggplot2) library(gganimate) theme_set(them
我想将绘图标签(标题、副标题)对齐到图像的左侧,而不是绘图区域的左侧,以获得 gganimate 动画。 这可以通过转换为 gtable 然后修改布局来使用静态图表。动画需要一种不同的方法,因为 gg
试图创建一个具有简单特征的动画,本质上是一个区域分布图形式的空间变量的时间序列。 问题是多边形在动画播放时遍布整个情节。 这是一个可重现的示例,部分摘自 https://www.blog.cultur
我是一名优秀的程序员,十分优秀!