为 gganimate 创建的 .gif 定义大小 - 更改尺寸/分辨率
Define size for .gif created by gganimate - change dimension / resolution
我正在使用 gganimate
创建一些我想插入到我的报告中的 .gif 文件。我能够保存文件并正常查看它们,但是,我发现显示的尺寸很小:480x480。有没有一种方法可以调整它 - 也许按照 ggsave()
中的 height
和 width
参数?
我可以放大,但这对质量的影响很差,而且对于我的用例来说很难看懂。
下面是一些示例代码:
gplot <-
ggplot(gapminder,
aes(x = gdpPercap, y = lifeExp, colour = continent,
size = pop,
frame = year)) +
geom_point(alpha = 0.6) +
scale_x_log10()
gganimate(gplot, "test.gif")
下面是这段代码的输出。
您可以调整常规设置:
animation::ani.options(ani.width= 1000, ani.height=1000, ani.res = 1000)
或更改每个命令的设置:
gganimate(gplot, ani.width= 1000, ani.height=1000, "test.gif")
使用gganimate
包的新API,就是
library(gganimate)
library(gapminder)
gplot <-
ggplot(
gapminder,
aes(x = gdpPercap, y = lifeExp, colour = continent, size = pop)
) +
geom_point(alpha = 0.6) +
scale_x_log10() +
transition_time(year)
magick::image_write(
animate(gplot, width = 1000, height = 1000),
"test.gif"
)
使用 magick
包可能会出现问题。
我认为更好的解决方案是使用 gganimate
中的 animate()
函数创建一个对象,然后将其传递给 anim_save()
函数。无需使用其他包。
library(gganimate)
library(gapminder)
my.animation <-
ggplot(
gapminder,
aes(x = gdpPercap, y = lifeExp, colour = continent, size = pop)
) +
geom_point(alpha = 0.6) +
scale_x_log10() +
transition_time(year)
# animate in a two step process:
animate(my.animation, height = 800, width =800)
anim_save("Gapminder_example.gif")
虽然Thomas suggests看了一下animate
,可惜文档在这方面不是很清楚
?animate
表明可以通过 ...
参数指定设备参数。您可以在 ?grDevices::png
or ?grDevices::svg
.
找到可用的参数
您可以通过指定res
参数直接控制分辨率。并且还可以使用不同的单位。我个人喜欢以英寸为单位控制图形尺寸并以此为基础控制分辨率。
好处是对我来说,字体大小的惊喜会少很多,当然图的质量会更好。
基于示例 。
library(gganimate)
library(gapminder)
my.animation <-
ggplot(gapminder, aes(x = gdpPercap, y = lifeExp, colour = continent, size = pop)) +
geom_point(alpha = 0.6) +
scale_x_log10() +
transition_time(year) +
theme_bw(base_size = 8)
animate(my.animation, height = 2,
width = 3, units = "in", res = 150)
anim_save("gapminder_example.gif")
尺寸为 450x300 像素,符合预期。
我正在使用 gganimate
创建一些我想插入到我的报告中的 .gif 文件。我能够保存文件并正常查看它们,但是,我发现显示的尺寸很小:480x480。有没有一种方法可以调整它 - 也许按照 ggsave()
中的 height
和 width
参数?
我可以放大,但这对质量的影响很差,而且对于我的用例来说很难看懂。
下面是一些示例代码:
gplot <-
ggplot(gapminder,
aes(x = gdpPercap, y = lifeExp, colour = continent,
size = pop,
frame = year)) +
geom_point(alpha = 0.6) +
scale_x_log10()
gganimate(gplot, "test.gif")
下面是这段代码的输出。
您可以调整常规设置:
animation::ani.options(ani.width= 1000, ani.height=1000, ani.res = 1000)
或更改每个命令的设置:
gganimate(gplot, ani.width= 1000, ani.height=1000, "test.gif")
使用gganimate
包的新API,就是
library(gganimate)
library(gapminder)
gplot <-
ggplot(
gapminder,
aes(x = gdpPercap, y = lifeExp, colour = continent, size = pop)
) +
geom_point(alpha = 0.6) +
scale_x_log10() +
transition_time(year)
magick::image_write(
animate(gplot, width = 1000, height = 1000),
"test.gif"
)
使用 magick
包可能会出现问题。
我认为更好的解决方案是使用 gganimate
中的 animate()
函数创建一个对象,然后将其传递给 anim_save()
函数。无需使用其他包。
library(gganimate)
library(gapminder)
my.animation <-
ggplot(
gapminder,
aes(x = gdpPercap, y = lifeExp, colour = continent, size = pop)
) +
geom_point(alpha = 0.6) +
scale_x_log10() +
transition_time(year)
# animate in a two step process:
animate(my.animation, height = 800, width =800)
anim_save("Gapminder_example.gif")
虽然Thomas suggests看了一下animate
,可惜文档在这方面不是很清楚
?animate
表明可以通过 ...
参数指定设备参数。您可以在 ?grDevices::png
or ?grDevices::svg
.
您可以通过指定res
参数直接控制分辨率。并且还可以使用不同的单位。我个人喜欢以英寸为单位控制图形尺寸并以此为基础控制分辨率。
好处是对我来说,字体大小的惊喜会少很多,当然图的质量会更好。
基于示例
library(gganimate)
library(gapminder)
my.animation <-
ggplot(gapminder, aes(x = gdpPercap, y = lifeExp, colour = continent, size = pop)) +
geom_point(alpha = 0.6) +
scale_x_log10() +
transition_time(year) +
theme_bw(base_size = 8)
animate(my.animation, height = 2,
width = 3, units = "in", res = 150)
anim_save("gapminder_example.gif")
尺寸为 450x300 像素,符合预期。