问题
I'd like to create a gif using gganimate
, but my axis ranges vary wildly in one frame. This is causing all subsequent frames to be squeezed.
In ggplot2
's facets, there's an option to have scales="free"
. Is there a way to have free scales in each frame of gganimate
?
Here's an example:
library(gapminder)
library(ggplot2)
library(gganimate)
theme_set(theme_bw())
p <- ggplot(gapminder, aes(gdpPercap, lifeExp, size = pop, color = continent,
frame = year)) +
geom_point() +
scale_x_log10()
gganimate(p)
Now we move one of the data points to some extreme value. This squeezes the points in all subsequent unaffected frames.
gapminder[1, "lifeExp"] <- 1000
gapminder[1, "gdpPercap"] <- 1e60
p <- ggplot(gapminder, aes(gdpPercap, lifeExp, size = pop, color = continent,
frame = year)) +
geom_point() +
scale_x_log10()
gganimate(p) # smooshed
回答1:
You can try experimenting with view_follow()
.
Code
p <- ggplot(gapminder, aes(gdpPercap, lifeExp, size = pop, color = continent)) +
geom_point() +
labs(title = 'Year: {frame_time}', x = 'GDP per capita', y = 'life expectancy') +
transition_time(year) +
view_follow()
animate(p)
来源:https://stackoverflow.com/questions/41026047/gganimate-with-changing-scales-axis-limits