Проблема с производительностью: размер файла HTML слишком большой и медленный рендеринг из-за визуализации d3 - PullRequest
0 голосов
/ 12 февраля 2019

Я работаю над отчетом, который объединяет D3.js и ggplot2 для визуализации данных временных рядов для стран всего мира.Я использую D3 в первый раз.В отчете ggplot2 используется для анализа на уровне страны, а диаграмма D3 - для уровня индикатора.Чтобы быть более конкретным, есть только одна диаграмма D3 для каждого индикатора;в то время как под каждым индикатором может быть 200 гплот, а именно под одним индикатором для каждой страны.

Я запустил отчет по 5 показателям, я получил HTML-файл размером 50 МБ, который буквально стоит до 30 секунд, чтобы открыть его в Google Chrome.Затем я удаляю все D3 (в образце отчета 5 диаграмм рассеяния D3), размер файла html уменьшен до 41 МБ.Я знаю после удаления D3, HTML все еще большой.Но мне интересно, почему 5 D3, а именно может занять до 10 МБ?(Я измеряю каждый холст SVG по ширине и высоте = 400). Может ли это быть вызвано тем, что DOM скрывает все данные (просто догадываясь, новичок в этой области)?Есть ли решение, чтобы уменьшить размер диаграммы D3, чтобы сделать HTML легче?

И тогда я предполагаю, что мой второй вопрос заключается в том, почему HTML-код, доступный только для ggplot, все еще так велик?Я использую уценку R для создания отчета.И в зависимости от показателей общее количество строк данных (по всей стране, один показатель) может составлять около 20 000.

Я ищу лучший способ уменьшения размера HTML или рендеринга.Прямо сейчас, если я запущу отчет для 20 индикаторов, он застрянет (никогда не завершит рендеринг в Chrome)

Большое спасибо!Любые предложения приветствуются!

1 Ответ

0 голосов
/ 15 февраля 2019

Нашел этот пост, который решает мою проблему: https://www.zevross.com/blog/2017/06/19/tips-and-tricks-for-working-with-images-and-figures-in-r-markdown-documents/

Мой главный вывод: «Отчеты R Markdown, которые сильно загружены на графиках и картах, могут давать большие файлы HTML, которые не оптимизированы для просмотра в Интернете».Из-за настройки по умолчанию на рис разрешение высокое.Чтобы решить мою проблему, я включаю fig.retina = 1 (значение по умолчанию 2, которое умножает разрешение на 2, чтобы соответствовать экрану сетчатки), а также dpi = 72, что значительно уменьшает размер выходного html вдвое.

Итак, моя полная настройка в блоке визуализации r:

```{r eval=TRUE, echo=FALSE, message=FALSE, warning=FALSE, results='asis', 
      out.width = '500px', dpi= 72, fig.retina=1}
```

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...