ggplot geom_boxplot рендеринг крайне медленно - PullRequest
1 голос
/ 22 апреля 2019

У меня есть data.table с 90000 строками, назовем его dtWeights. Я пытаюсь построить коробку с гранями, что-то вроде:

ggplot(dtWeights, aes(Day, Weight, group = Day)) +
  geom_boxplot() +
  facet_wrap(~ year(Date))

Где dtWeights имеет вид:

      Date Day Weight
2005-01-01   1   0.01
2005-01-01   2   0.01
2005-01-01   3   0.01
2005-01-01   4   0.01
2005-01-01   5   0.01
---
2019-01-01  96   0.01
2019-01-01  97   0.01
2019-01-01  98   0.01
2019-01-01  99   0.01
2019-01-01 100   0.01

Следовательно, каждый аспект будет содержать 100 полей (соответствующих Day), каждый из которых представляет несколько сотен Date; и всего будет около 14 граней.

Когда я строю это в ggplot и отрисовываю график поверх X11, процесс отрисовки всего изображения занимает несколько минут. Однако, если я нанесу это на базу R, он рендерится почти сразу. Это может быть сделано, например:

par(mfrow = c(4, 4))
lapply(
  2005:2019,
  function(localYear){
    boxplot(Weight ~ Day, data = dtWeights[year(Date) == localYear])
  }
)

Я понимаю, что база R будет быстрее, чем ggplot, но разница в скорости здесь гораздо заметнее, чем разница между простым линейным графиком или гистограммой.

Может кто-нибудь объяснить, почему коробочные графики в ggplot так болезненно медленно рендерится, и объяснить, могу ли я что-нибудь с этим сделать с моей стороны?

...