gpt4 book ai didi

r - ggsave 和 gganimate 的 'animate' 中符号的大小一致

转载 作者:行者123 更新时间:2023-12-04 11:00:11 26 4
gpt4 key购买 nike

我的最终目标是创建两个输出:

1) 显示我所有数据的静态图像,另存为 png2) 我的数据动画,保存为 gif .

我正在使用 ggplot2gganimate我对为什么两种保存方法之间的符号大小不一致感到困惑。

我试过调整 dpi并保存为 jpg而不是 png ,但没有运气。 谁能帮我弄清楚如何使两个输出对象中的宽度、高度和符号大小保持一致?

这是一个显示两个输出的可重现示例。您可以看到gif 中的黑点较小。 .

制作 png

library(gganimate)
library(ggplot2)

locs <- data.frame(x = c(1, 2, 3, 4, 5, 6),
y = c(1, 2, 3, 3.1, 3.2, 6),
LDT = c(1, 2, 3, 4, 5, 6))

g <- ggplot(locs, aes(x, y)) +
geom_point() +
theme_void() +
theme(plot.background = element_rect(fill = "pink"))
g
ggsave("test.png", g, width = 2, height = 2, dpi = 100)

enter image description here

制作 gif
anim <- g + transition_time(LDT)
animate(anim, duration = 1, fps = 20, width = 200, height = 200)
anim_save("test.gif")

enter image description here

最佳答案

animate()默认使用 png()生成帧。
在您的 ggsave调用您指定的绘图分辨率为 100 dpi。
使用 png 获得相同的结果您必须设置 res = 100 (见 test_png_device.png)。
因此,使用 animate 获得一致的符号大小您必须将决议传递给 png作为 animate 的可选参数如下:

library(gganimate)
library(ggplot2)
library(gifski)

locs <- data.frame(x = c(1, 2, 3, 4, 5, 6),
y = c(1, 2, 3, 3.1, 3.2, 6),
LDT = c(1, 2, 3, 4, 5, 6))

g <- ggplot(locs, aes(x, y)) +
geom_point() +
theme_void() +
theme(plot.background = element_rect(fill = "pink"))

ggsave("test.png", g, width = 2, height = 2, dpi = 100)

png(filename = "test_png_device.png", width = 200, height = 200, units = "px", res = 100)
g
dev.off()

anim <- g + transition_time(LDT)
myAnimation <- animate(anim, duration = 1, fps = 20, width = 200, height = 200, renderer = gifski_renderer(), res = 100)
anim_save("test.gif", animation = myAnimation)

ggsave Result

加法 :不确定您是否对此感兴趣,但是,我喜欢使用库( plotly)来制作动画,因为它默认添加了一个动画 slider 。
这里是 ggplotly - 方式为您的示例:
library(plotly)
library(htmlwidgets)

locs <- data.frame(x = c(1, 2, 3, 4, 5, 6),
y = c(1, 2, 3, 3.1, 3.2, 6),
LDT = c(1, 2, 3, 4, 5, 6))

g <- ggplot(locs, aes(x, y)) + theme_void() +
theme(panel.background = element_rect(fill = "pink")) +
geom_point(aes(frame = LDT))

p <- ggplotly(g) %>%
animation_opts(500, easing = "linear", redraw = FALSE)

saveWidget(p, file = "myAnimation.html", selfcontained = TRUE)
browseURL("myAnimation.html")
Here可以找到相关的帖子。

关于r - ggsave 和 gganimate 的 'animate' 中符号的大小一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58858687/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com