Генерация динамических графиков - PullRequest
0 голосов
/ 15 августа 2011

Я создаю веб-приложение в Django и хочу создать динамические графики на основе данных.

Ранее я использовал Google Image Charts, но столкнулся со значительными ограничениями API, включая ограничение длины URL.

Я перешел на использование matplotlib для создания своих диаграмм. Мне интересно, будет ли это плохим решением для будущего масштабирования - используют ли какие-либо производственные сайты matplotlib? Для генерации одного графика требуется около 100 мс (гораздо дольше, чем запрашивать базу данных для данных), это просто невозможно с точки зрения масштабирования / обработки нескольких запросов?

Ответы [ 3 ]

1 голос
/ 16 августа 2011

Вы можете масштабировать matplotlib для построения графиков, если вы можете визуализировать графики вне цикла запрос / ответ с помощью чего-то вроде Celery .Вам придется управлять хранением отрендеренной диаграммы, а также отключать ее при изменении данных.Это будет зависеть от того, как часто данные изменяются и как часто они просматриваются.

Однако я склонен придерживаться клиентских библиотек для построения графиков, таких как jqplot или Highcharts .

0 голосов
/ 16 августа 2011

Если производительность является такой проблемой и вам не нужны причудливые графики, вы можете обойтись без создания изображений вообще. Визуализируйте размерные и цветные элементы div для простой гистограммы в формате HTML. Для глазных конфет примените box-shadow и / или градиентный фон.

Я делал это на некоторых веб-страницах отчета, отображая маленькую 5-столбчатую (квинтильную) диаграмму в каждой строке большой таблицы с огромной скоростью и почти без нагрузки на сервер. Пользователи любят это за раннюю и краткую обратную связь.

Используя canvas и javascript, вы можете улучшить эту схему для других типов диаграмм. Я не знаю, могли бы вы использовать для этого код Google для построения графиков, не проходя через их API, но несколько линий или круговых сегментов легко нарисовать, если нет.

0 голосов
/ 16 августа 2011

Для такого рода функций вы должны просматривать очереди сообщений, например, ZeroMQ . Это позволяет использовать генерацию асинхронных графов, которая не блокирует процессы веб-сервера (если реализовано правильно).

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