ggplot2 - время построения графика значительно медленнее на втором и последующих графиках в сеансе (RStudio)
У меня есть проблема, когда первый график сценария ggplot в сеансе RStudio выполняется очень быстро (~ 2-3 секунды), а все последующие графики в том же сеансе с использованием точно такого же сценария занимают значительно больше времени (~ 10-20 секунд). секунды). Мне также часто приходится перезагружать график, чтобы он отображался правильно.
Иногда я также получаю предупреждающее сообщение:
In grid.Call.graphics(C_setviewport, vp, TRUE) : reached elapsed time limit
или же
In Summary.unit(list(list(2.2, NULL, 8L), list(1, list(list(1, list( : reached elapsed time limit
, хотя график все еще отображается после нажатия кнопки «обновить текущий график».
Я предполагаю, что есть проблема с повторным вызовом какой-либо функции, но я не могу понять, какая именно.
Вот скрипт, который я использую:
library(ggplot2)
library(tidyverse)
library(showtext)
library(jpeg)
library(patchwork)
#font
font_add("frutiger", regular = "Schrift/frutigerltcom-light.ttf", italic = "Schrift/frutigerltcom-lightitalic.ttf")
showtext_auto()
#colors
i_palette <- c('#ab9c7d', '#235b7f', '#a6aa18', '#338598', '#12c1cd', '#b3d222')
#read data
data <- read.csv(file = "Input_CSV/cond.csv", sep = ";")
#GEOMETRY
g <- ggplot(data,
aes(fill = structure,y=Mittelwert, x=fct_inorder(paste))
) +
geom_hline(yintercept = 3, linetype = 2) +
geom_bar(position = "dodge", stat = "identity") +
geom_errorbar(aes(ymin=Mittelwert-Stdabw, ymax=Mittelwert+Stdabw), width=.2, position=position_dodge(.9))
#LABEL
l <- g +
labs(x = "paste",
y = expression(paste("conductance in ",10^{6}," S/m")),
)
#SCALE
s <- l +
scale_y_continuous(breaks = c(0,3,5,10,15,20)) +
scale_x_discrete(labels = c("1","2","3","4")) +
scale_fill_manual(values = i_palette) +
scale_colour_manual(values = i_palette)
#COORDINATES
c <- s +
coord_cartesian (xlim = c(1, 4), clip="off")
#ANNOTATE
a <- c +
annotate("text", x = 5, y = 3, label = "spec", size = 3)
#THEME
graph1 <- a +
theme_bw() +
theme(text = element_text('frutiger', size=14),
panel.grid.minor = element_blank()
)
#ADD LOGO:
path1 <- "./logo_300px.jpg"
img <- readJPEG(path1, native = TRUE)
img_graph <- graph1 + inset_element(p=img,left = 0.83,bottom = 0,right = 0.97,top = .1, align_to = 'full')
img_graph
showtext_auto(FALSE)
Добавление showtext_auto(FALSE) уже сократило время на одну или две секунды, и я подозревал, что задержка исходит из пакета showtext, но удаление команд font_add() и showtext_auto() для второго запуска не помогает.
Я также пробовал:
- Очистка рабочего пространства
- удаление вызовов library() после первого запуска
- используя print(img_graph) или plot(img_graph) вместо простого вызова img_graph
У кого-нибудь есть идея решить эту проблему? Я уже пытался поискать в Google некоторые рекомендации по использованию скриптов ggplot2 и другие вещи, но не смог найти ни одного полезного источника.
Большое спасибо за твою помощь!