我经常用ggplot2生成相当大的图表包,并且我观察到,对于我的典型用例,我的Mac和Windows机器的性能有很大的不同(3x)。在这两种情况下,我都使用了R4.1和ggplot2 3.3.5,AGG图形后端,以及在RStudio中设置为默认的反混叠选项。Mac机是一台运行苹果硅R的Mac迷你M1。不幸的是,Windows box是一台正在工作的虚拟机,很难在其上得到确切的规格,但是它有32 it的RAM,而且我没有注意到其他工作负载上的任何缓慢,所以我觉得在一个简单的任务上性能上的巨大差异不能很容易地归因于RAM、处理器或磁盘速度。
下面是一些用模拟数据演示一个典型任务的代码:10页PDF平面图,每页16行。在Mac电脑上,这些情节大约在3秒内生成,而在Windows上则需要9-10秒。
library(data.table)
library(ggplot2)
library(glue)
theme_set(theme_bw())
dat <- list()
n = 51
i <- 1
for (linetype in 1:2) {
for (color in 1:5) {
for (v in 1:16) {
dat[[i]] <- data.table(
linetype=glue("L{linetype}"),
color=glue("C{color}"),
variable=glue("V{v}"),
period=1:n,
value=rnorm(n)
)
i <-i + 1
}
}
}
dat <- rbindlist(dat)
system.time({
pdf("test.pdf", onefile=TRUE)
for (i in 1:10) {
print(ggplot(dat, aes(period, value, color=color, linetype=linetype))+geom_line()+facet_wrap(~variable))
}
dev.off()
}) 发布于 2022-09-30 17:22:20
这很有趣,因为当我将绘图绘制到图形设备窗口而不是保存到文件时,当涉及到ggplot2呈现时,我经历了相反的情况。
我和一个工作中的拼贴游戏分享一个任务,这个任务涉及到生成一个具有大约35-40个面的分面图形。当我们对某些参数进行调整时,我们经常需要在几次迭代中生成这个图。在他的Windows机器上,绘图在几秒钟内生成一个图形设备窗口,在我的MacBook Pro (64 to M1)上几乎需要一分钟。
但是,如果我将图保存为pdf,它将在不到一秒钟内生成。这导致我使用了一个pdf查看器(Skim),它可以在文件更新时自动刷新,并使用ggsave生成图像以供审阅。
https://stackoverflow.com/questions/73911151
复制相似问题