У меня есть 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 так болезненно медленно рендерится, и объяснить, могу ли я что-нибудь с этим сделать с моей стороны?