使用 gganimate 逐渐改变多边形的颜色
Gradually change colour of polygon with gganimate
我正在尝试创建一个动画,其中绘制一个对象同时逐渐改变其颜色。为了便于说明,假设我要绘制的对象是一个圆。
我目前有什么
我创建了一个数据集,其中包含我的圆的坐标、一个 time
变量和一个用于逐渐改变颜色的 alpha
变量:
t = seq(-pi, pi, length.out = 30)
df <- data.frame(
x = sin(t),
y = cos(t),
time = 1:30,
alpha = seq(0.1, 1, length.out = 30)
)
然后我使用来自 {gganimate} 的 transition_reveal()
制作动画:
ggplot(df, aes(x = x, y = y)) +
geom_path() +
geom_polygon(aes(alpha = alpha), fill = 'grey30') +
coord_fixed() +
scale_alpha_identity() +
transition_reveal(time)
产生以下动画:
圆形是按顺序绘制的(这是我想要的),但是多边形的颜色没有改变。似乎只有 df$alpha
的第一个值用于整个动画。
我的问题是我怎样才能改变这个动画,使圆仍然按顺序绘制和多边形的颜色逐渐变灰了?
可能有一种更简单的方法可以做到这一点,但通过一些数据操作,您可以通过 transition_states
:
df$frame <- 1
df <- do.call(rbind, lapply(seq(nrow(df)), function(i) {
df$frame <- i
df$alpha <- seq(0.1, 1, length = 30)[i]
df[1:i,]
}
))
df <- df[df$frame > 2,]
ggplot(df, aes(x = x, y = y)) +
geom_path() +
geom_polygon(aes(alpha = alpha), fill = 'grey30') +
coord_fixed() +
scale_alpha_identity() +
transition_states(frame)
我正在尝试创建一个动画,其中绘制一个对象同时逐渐改变其颜色。为了便于说明,假设我要绘制的对象是一个圆。
我目前有什么
我创建了一个数据集,其中包含我的圆的坐标、一个 time
变量和一个用于逐渐改变颜色的 alpha
变量:
t = seq(-pi, pi, length.out = 30)
df <- data.frame(
x = sin(t),
y = cos(t),
time = 1:30,
alpha = seq(0.1, 1, length.out = 30)
)
然后我使用来自 {gganimate} 的 transition_reveal()
制作动画:
ggplot(df, aes(x = x, y = y)) +
geom_path() +
geom_polygon(aes(alpha = alpha), fill = 'grey30') +
coord_fixed() +
scale_alpha_identity() +
transition_reveal(time)
产生以下动画:
圆形是按顺序绘制的(这是我想要的),但是多边形的颜色没有改变。似乎只有 df$alpha
的第一个值用于整个动画。
我的问题是我怎样才能改变这个动画,使圆仍然按顺序绘制和多边形的颜色逐渐变灰了?
可能有一种更简单的方法可以做到这一点,但通过一些数据操作,您可以通过 transition_states
:
df$frame <- 1
df <- do.call(rbind, lapply(seq(nrow(df)), function(i) {
df$frame <- i
df$alpha <- seq(0.1, 1, length = 30)[i]
df[1:i,]
}
))
df <- df[df$frame > 2,]
ggplot(df, aes(x = x, y = y)) +
geom_path() +
geom_polygon(aes(alpha = alpha), fill = 'grey30') +
coord_fixed() +
scale_alpha_identity() +
transition_states(frame)