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 и другие вещи, но не смог найти ни одного полезного источника.

Большое спасибо за твою помощь!

0 ответов

Другие вопросы по тегам