Work: Google visualization and chart API

Work Add comments

http://chart.apis.google.com/chart?cht=p3&chd=s:Uf9a&chs=250x100&chl=January|February|March|April

В свете инструментации кода, мониторинга и сбора статистики не смог пройти мимо довольно интересных средств визуализации. Нельзя сказать, что такого раньше совсем не было, можно только сказать - что такого качество, даже за деньги, ещё поискать надо. Итак, о Google Chart API,  Google visualization API и о том, как сложно сделать простую вещь.

В декабре прошлого, 2007-го года, Google открыл доступ к своему Chart API. Идея очень простая - специально сконструированный URL возвращает картинку. Использование бесплатно, упоминают некий предел в 250ооо вызовов в день (~3 в секунду) после которого надо договариваться с гуглом отдельно.

Вот пример -

http://chart.apis.google.com/chart
?chxt=x,y,r,t
&cht=lc
&chd=s:cEAELFJHHHKUju9uuXUc
&chco=76A4FB
&chs=200x125

http://chart.apis.google.com/chart?chxt=x,y,r,t&cht=lc&chd=s:cEAELFJHHHKUju9uuXUc&chco=76A4FB&chs=200x125

Типов графиков много, есть даже такие экзотические как этот

Radar chart

или этот - географические карты

http://chart.apis.google.com/chart?cht=t&chs=220x110&chd=t:0,100,50,32,60,40,43,12,14,54,98,17,70,76,18,29&chco=FFFFFF,FF0000,FFFF00,00FF00,FFFF00&chld=DZEGMGAOBWNGCFKECGCVSNDJTZGHMZZM&chtm=africa&chf=bg,s,EAF7FE

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

Yellow line chart: less easy to read as data points are less spread along the x-axis

Yellow line chart: very difficult to read as data points are very squashed along the x-axis

Идеальная замена генерации графика внутри браузера средствами JavaScript. Нагрузку перенесли с сервера на клиент, и теперь ещё раз с клиента на сторонний (Google) сервер. Не ясно, насколько забота о нагрузке клиента актуальна сегодня, но в 2006-том, когда я последний раз этим занимался, было очень актуально.

В этом месте опытные товарищи должны были вспомнить о практическом ограничении длины URI в HTTP. Так как данные передаются прямо в URL - то запихнуть туда можно их вполне ограниченное количество. См предложенные способы кодирования входных данных.

Особенно опытные должны были также подумать о интернационализации. Тут всё плохо - поддержки нет, даже если вы не забудете сделать urlencode текста набранного не латинскими буквами.

Для публичного сайта, или стартапа какого - это просто клад. С коммерческим применением не всё ясно - можно ли себе позволить полагаться на внешний сервис? Как быть если сервис завтра исчезнет? Что если данные по которым это всё генерируется - private? и т.д.

С архитектурной точки зрения - сервис просто конфетка - яркий пример того, как сложно сделать простую вещь.

На этом дело, впрочем, не закончилось, и спустя полгода, весной 2008-го Google выпускает Google Visualization API. Теперь визуализация ещё сложнее - DHTML и flash. Правда и возможности шире. Вот пример - выглядит просто потрясающе

JavaScript удалён или не работает поэтому ничего не видно, припасть к источнику


Графики эти не просто интерактивные, данные могут быть подгружены динамически - тут надо либо самому их отдавать особым образом (JSON, CSV) смотреть как именно, либо закачать в документ Google Spreadsheets. Там целое локальное API смотреть API вокруг этого наворочено.

Любопытно, что мелкий временной процесс и тут не просто отобразить, самый мелкий шаг этого графика - 1 час. Если со статическими графиками ещё можно было что-то придумать - то тут уже всё - никак нельзя.

Кроме такого выдающегося контрола, есть таблицы с сортировкой по клику, интерактивные столбики, пироги и географические карты смотреть что ещё есть . Везде JavaScript и Adobe Flash т.е. решения довольно тяжеловесные, что не умаляет конечно, простоту анализа отображенных данных.

Отличная демонстрация на живом бизнес примере - Google Analytics практически полностью построен на этих графиках.

Всё опять совершенно бесплатно. Никаких ограничений вроде 250ооо вызовов, только Google Term of Service

Меня не отпускает ощущение, что легко визуализировать только относительно статические данные, а с динамикой придётся либо основательно повозиться (JavaScript code) либо устроить себе агрегирующий код на сервере, с которого и кормить цифрами эти контролы.

Похожие записи:

One Response to “Work: Google visualization and chart API”

  1. lifephysic Says:

    Написал программу на QT для генерации javascript кода Гугл диаграмм.
    http://lifeisfine.ru/2010/04/google-chart-api-mysql-php/

Leave a Reply

Entries RSS Comments RSS Log in Admin