tec*_*234 8 r ggplot2 gganimate
自从David Robinson发布他的gganimate包并认为我自己有一个游戏以来,我一直羡慕和钦佩在Twitter上出现的各种ggplot动画.使用geom_bar时,我遇到了gganimate的问题.希望以下示例演示此问题.
首先为可重现的示例生成一些数据:
df <- data.frame(x = c(1, 2, 1, 2),
y = c(1, 2, 3, 4),
z = c("A", "A", "B", "B"))
Run Code Online (Sandbox Code Playgroud)
为了证明我正在尝试做什么,我认为绘制一个普通的ggplot是有用的z.我正试图让gganimate产生一个在这两个图之间循环的gif.
ggplot(df, aes(x = x, y = y)) +
geom_bar(stat = "Identity") +
facet_grid(~z)
Run Code Online (Sandbox Code Playgroud)

但是当我使用gganimate时,B的情节表现得很奇怪.在第二帧中,条形从第一帧条形结束的值开始,而不是从原点开始.好像它是一个堆积的条形图.
p <- ggplot(df, aes(x = x, y = y, frame = z)) +
geom_bar(stat = "Identity")
gg_animate(p)
Run Code Online (Sandbox Code Playgroud)

顺便说一下,当尝试相同的情节时,geom_point一切都按预期工作.
q <- ggplot(df, aes(x = x, y = y, frame = z)) +
geom_point()
gg_animate(q)
Run Code Online (Sandbox Code Playgroud)
我试图发布一些图片,但显然我没有足够的声誉,所以我希望没有它们就有意义.这是一个错误,还是我错过了什么?
提前致谢,
托马斯
Sti*_*ibu 13
原因是没有刻面,条形堆叠.用途position = "identity":
p <- ggplot(df, aes(x = x, y = y, frame = z)) +
geom_bar(stat = "Identity", position = "identity")
gg_animate(p)
Run Code Online (Sandbox Code Playgroud)
为了避免这样的情况混乱,是替代更加有用frame的fill(或colour,取决于您的using` GEOM):
p <- ggplot(df, aes(x = x, y = y, fill = z)) +
geom_bar(stat = "Identity")
p
Run Code Online (Sandbox Code Playgroud)
要绘制的,当你更换两个地块fill由frame完全对应专门绘制在时间的一种颜色.