Представлена (https://twitter.com/_nnnick/status/314049798502248448) новая JavaScript-библиотека Chart.js (http://www.chartjs.org/), позволяющая генерировать на стороне клиента визуально привлекательные графики и диаграммы с использованием средств HTML5 (canvas). Библиотека поддерживает создание 6 типов диаграмм (линейные графики, столбцы, кривые, круговые и радиальные диаграммы) и отличается небольшим размером (4.5 Кб в сжатом виде) и гибкостью в плане кастомизации отображения графиков. Поддерживается использование анимированных эффектов. Код открыт (https://github.com/nnnick/Chart.js) под лицензией MIT.
Интересно, что изначально код был опубликован 18 марта, после чего сайт был закрыт (https://news.ycombinator.com/item?id=5400004) из-за претензии о наличии интеллектуальной собственности со стороны работодателя разработчика бибилотеки. Теперь вопрос улажен и Chart.js вновь возвращён в открытый доступ, при этом лицензия была изменена на MIT.<center><img src="http://www.opennet.me/opennews/pics_base/0_1363856877.png" style="border-style: solid; border-color: #e9ead6; border-width: 15px;" title="" border=0><img src="http://www.opennet.me/opennews/pics_base/0_1363856974.png" style="border-style: solid; border-color: #e9ead6; border-width: 15px;" title="" border=0></center>
<center><img src="http://www.opennet.me/opennews/pics_base/0_1363857067.png" style="border-style: solid; border-color: #e9ead6; border-width: 15px;" title="" border=0></center>
<center><img src="http://www.opennet.me/opennews/pics_base/0_1363857157.png" style="border-style: solid; border-color: #e9ead6; border-width: 15px;" title="" border=0></center>
URL: http://www.chartjs.org/
Новость: http://www.opennet.me/opennews/art.shtml?num=36456
"и отличается небольшим размером (4.5 Кб в сжатом виде)"
хмм ошибочка?https://github.com/nnnick/Chart.js/blob/master/Chart.min.js
"file 40 lines (40 sloc) 20.034 kb "
Гзип?
в сжатом виде == min + gzip
Есть http://www.jqplot.com/. Чем этот лучше?
Хотя бы тем, что не требует jquery.
Как по мне что тот, что другой выглядят оборванцами на фоне http://www.highcharts.com/, но это не означает, что они не будут более подходящими для определенных задач. Кого-то привлечет лицензия, кого-то меньший объем.
ерунда какая-то ейбогу..
Чем он лучше http://humblesoftware.com/flotr2/index ?
А вот няшечка для реалтаймовых графиков: http://smoothiecharts.org/
Открыв страницу с примером c 1-2% утилизация цпу подскочила до 15-16%. На дворе шёл 21 век, А10-5800 и "реалтаймовый" рисовальщик 2д-графиков в браузере.
Если убрать закраску графиков, то будет меньше. Если отрубить интерполяция и выводить данные как есть, то будет еще меньше.У меня в проекте три достаточно больших графика рисуются в реалтайме причем там добавляется порядка 50-100 точек в секунду. Рисует вполне удовлетворительно. Собственно оно даже на iPad2 вполне смотрибельно получается.
Если делать то же на скажем jfreechart или скажем Qwt(http://qwt.sourceforge.net/) то загрузка процессора получается выше (до 100% подскакивает временами).
Реалтайм графики это вообще отдельная песня (с высокими частотами обновления, а не 5 раз в секунду). Библиотек для них практически нет.
интереса ради - а где есть необходимость обновлять графики чаще чем 5 раз в секунду?
WebSocket realtime node.js application наверно
> WebSocket realtime node.js application наверноНет, node.js не используется.
Фишка не в обновлении 5 раз в секунду, а сколько затрачивается ресурсов для этого.
Ну просто если б я что-то подобное делал - то плевать с какой скоростью летят данные, сам график перерисовывать больше тех же пяти раз в секунду смысла нет - на него ж человеку смотреть. Может и двух раз хватит, тут уже экспериментировать надо. Соответственно и затраты ресурсов будут ну никак не пропорциональные количеству прилетевших данных.
> Ну просто если б я что-то подобное делал - то плевать с
> какой скоростью летят данные, сам график перерисовывать больше тех же пяти
> раз в секунду смысла нет - на него ж человеку смотреть.
> Может и двух раз хватит, тут уже экспериментировать надо. Соответственно и
> затраты ресурсов будут ну никак не пропорциональные количеству прилетевших данных.Реалтайм отображение фотоплетизмограммы. Если слово не знакомо, то представь себе ЭКГ-монитор, вот примерно то же самое по внешнему виду и требованиям, но данные немного иначе получаются.
Вообще, в идеале, там нужно бы 60 кадров в секунду, чтобы не раздражало оператора. На экране одновременно отображается порядка 8 секунд данных.
> интереса ради - а где есть необходимость обновлять графики чаще чем 5
> раз в секунду?Медицина. Отображение фотоплетизмограммы в реальном времени.
Понятно, в следующий раз выражайся яснее. Между "обновить график" и "дорисовать график" большая разница. Обновлять график, то есть замещать его полностью новым, чаще пары раз в секунду не нужно.
Я имел ввиду естественно sample rate относительно того, что касается данных и refresh rate то что касается отрисовки графика..И нет, график там не дорисовывается, а перерисовывается на каждом кадре. А когда приходят новые данные, тогда , эти данные добавляются в график а часть старых данных выкидывается (то есть по сути имеем очередь фиксированной длины куда суются данные).
Естественно поступление данные и перерисовка графика друг на друга не завязаны, то есть это дело асинхронно работает.
> Открыв страницу с примером c 1-2% утилизация цпу подскочила до 15-16%. На
> дворе шёл 21 век, А10-5800 и "реалтаймовый" рисовальщик 2д-графиков в браузере.А что вы хотели?
svg+js проц кушать любят будь здоров.
Там не svg, там canvas
Ну и как с етим нарисовать график из CSV данных?
А вам не кажется, что это проблема реализации бэкэнда, а не фронтендной библиотеки?
http://d3js.org/
> http://d3js.org/
>>> f = open('sample.csv').readlines()
>>> rv = json.dumps([[float(i) for i in k.split(',')] for k in f])
>>> file_out.write(rv)
Гораздо менее функциональный, но легкий компонент для отрисовки графиков в реальном времени http://jsgadget.ru/jschart.html