【发布时间】:2019-03-22 09:28:39
【问题描述】:
目标
我想放大Europe 这些年来的 GDP。梦幻般的ggforce::facet_zoom 可以很容易地为静态图(即特定年份)提供此功能。
然而,事实证明,移动秤比预期的要难。 gganimate 似乎从第一帧 (year == 1952) 开始采用 x 轴限制,并一直持续到动画结束。 This related, but code-wise outdated question did not yield an answer, unfortunately。 + coord_cartesian(xlim = c(from, to)) 和 facet_zoom(xlim = c(from, to)) 似乎都无法影响 facet_zoom 窗口超出静态限制。
- 有什么方法可以让
gganimate“重新计算”facet_zoom每帧的比例?
理想结果
第一帧 最后一帧 当前代码library(gapminder)
library(ggplot2)
library(gganimate)
library(ggforce)
p <- ggplot(gapminder, aes(gdpPercap, lifeExp, size = pop, color = continent)) +
geom_point() + scale_x_log10() +
facet_zoom(x = continent == "Europe") +
labs(title = "{frame_time}") +
transition_time(year)
animate(p, nframes = 30)
【问题讨论】:
-
我能想到的一种解决方法是导出单个 png,然后从中创建一个 gif 文件。但是每一步都改变 x 轴会使情节非常难以理解,而且 imo 的用处也减少了
-
谢谢,感谢您的解决方法!我想使用
tweenR来计算中间位置,用ggplot()循环它们以将每个图保存到磁盘并在最后一步将它们缝合在一起。但这是最后的手段。 -
可能
view_follow应该能够强制执行此操作,但我无法使其工作。首先,您需要关闭对数刻度,不知道为什么。但即便如此,它似乎也完全打破了facet_zoom。 -
好的,无论你尝试如何使用构面(也是“正常”构面),使用
view_follow的那一刻,轴可以设置为跨构面相同。这意味着按照目前的情况,这不太可能奏效。但也许@ThomasP85 会看到这一点。
标签: r ggplot2 gganimate ggforce