在不规则的时间动画持久数据点
Animating persistent data points at irregular times
我正在尝试为数据点设置动画以在特定时间出现。数据点没有相互链接,所以应该没有踪迹 to/from 它们。他们应该在约定的时间和地点出现。
但是,可能由于不规则时间间隔和帧渲染的性质,出现了很多导入。在前面有很长间隔的数据点之前确实很明显。
我在 animate()
中弄乱了 shadow_trail()
、shadow_wake()
、nframes
以及其他一些 transition_*()
函数,但都无济于事。
这是一个 10x10 网格的代码示例,其中每个方块在数据中指定的时间弹出,但不是以任何固定间隔弹出。您可以看到一些方块到达了它们的目的地。它们应该就地出现。
library(ggplot2)
library(gganimate)
pos <- seq(1, 100, 1)
# Squares on a 10x10 grid that pop up at random times
grid_data <- data.frame(pct = pos,
t = rnorm(100, mean=50, sd=25),
xpos = (pos-1) %% 10,
ypos = floor((pos-1) / 10))
p <- ggplot(grid_data, aes(x=xpos, y=ypos, fill=t)) # plot tiles, color by time of arrival
p <- p + geom_tile(aes(width=0.95, height=0.95)) # tiles with some gap around them
p <- p + transition_time(time=grid_data$t) # Show data points by their time
p <- p + shadow_mark(past=TRUE, future=FALSE) # Keep showing past (prior) data points
animate(p)
我认为发生的事情是,当您使用 transition_time
时,您的过渡是 'travelling' 从一个图块到下一个图块。您可以改用 transition_reveal
来防止这种情况。
试试这个:
library(ggplot2)
library(gganimate)
pos <- seq(1, 100, 1)
grid_data <- data.frame(pct = pos,
t = rnorm(100, mean=50, sd=25),
xpos = (pos-1) %% 10,
ypos = floor((pos-1) / 10))
grid_data %>%
ggplot() +
aes(x=xpos, y=ypos, fill=t) +
geom_tile(aes(width=0.95, height=0.95)) +
transition_reveal(pct, t, keep_last = TRUE) +
anim_save("animated_geom_tile.gif")
产生这个...
我正在尝试为数据点设置动画以在特定时间出现。数据点没有相互链接,所以应该没有踪迹 to/from 它们。他们应该在约定的时间和地点出现。
但是,可能由于不规则时间间隔和帧渲染的性质,出现了很多导入。在前面有很长间隔的数据点之前确实很明显。
我在 animate()
中弄乱了 shadow_trail()
、shadow_wake()
、nframes
以及其他一些 transition_*()
函数,但都无济于事。
这是一个 10x10 网格的代码示例,其中每个方块在数据中指定的时间弹出,但不是以任何固定间隔弹出。您可以看到一些方块到达了它们的目的地。它们应该就地出现。
library(ggplot2)
library(gganimate)
pos <- seq(1, 100, 1)
# Squares on a 10x10 grid that pop up at random times
grid_data <- data.frame(pct = pos,
t = rnorm(100, mean=50, sd=25),
xpos = (pos-1) %% 10,
ypos = floor((pos-1) / 10))
p <- ggplot(grid_data, aes(x=xpos, y=ypos, fill=t)) # plot tiles, color by time of arrival
p <- p + geom_tile(aes(width=0.95, height=0.95)) # tiles with some gap around them
p <- p + transition_time(time=grid_data$t) # Show data points by their time
p <- p + shadow_mark(past=TRUE, future=FALSE) # Keep showing past (prior) data points
animate(p)
我认为发生的事情是,当您使用 transition_time
时,您的过渡是 'travelling' 从一个图块到下一个图块。您可以改用 transition_reveal
来防止这种情况。
试试这个:
library(ggplot2)
library(gganimate)
pos <- seq(1, 100, 1)
grid_data <- data.frame(pct = pos,
t = rnorm(100, mean=50, sd=25),
xpos = (pos-1) %% 10,
ypos = floor((pos-1) / 10))
grid_data %>%
ggplot() +
aes(x=xpos, y=ypos, fill=t) +
geom_tile(aes(width=0.95, height=0.95)) +
transition_reveal(pct, t, keep_last = TRUE) +
anim_save("animated_geom_tile.gif")
产生这个...