Open Flash Chart – строим графики

16 августа, 2008
Скриншот графика - Open Flash Chart

Создание изображений – довольно сложная и трудоемкая задача. Если не использовать специальных библиотек.

Об одной из них я и хочу рассказать.

Open Flash Chart. Уже по названию становится ясно, что:

1) библиотека распространяется с открытыми исходниками и бесплатно;

2) предназначена для создания графиков;

3) использует технологию Flash.

Сразу остановлюсь на третьем пункте. Flash обладает одним недостатком. Если у посетителя не установлен Flash player, то график он не увидит.

Зато достоинств гораздо больше:

1) Интерактивность. При наведении указателя мыши на график появляется подсказка с данными выбранной точки.

2) Снижение нагрузки на сервер. Если использовать графики в виде картинок, то серверу придется создавать изображение при каждом запросе, а это довольно ресурсоемкая операция. В данном случае используется один и тот же Flash ролик, который входит в состав дистрибутива библиотеки. Серверный скрипт должен только создать текстовую строку с данными для построения графика.

3) Увеличение скорости загрузки, экономия трафика. Flash ролик грузится только один раз, занимает 63 кБ. При этом график может быть размером с экран браузера.

Но это все теория. Переходим практической части.

Из дистрибутива библиотеки нам нужны:

1) Flash ролик - open-flash-chart.swf;

2) файлы open_flash_chart_object.php и open-flash-chart.php из папки php-ofc-library.

При этом файл open_flash_chart_object.php используется для создания html кода вставки графика на страницу. А open-flash-chart.php содержит вспомогательные функции для работы с данными.

Примечание. Для создания файла с данными не обязательно использовать PHP. В библиотеку входят готовые решения для .Net, Java, Ruby, Perl. Вообще-то можно использовать любой скриптовый язык или просто записать данные в обычный текстовый файл. Но формат данных довольно сложный и без вспомогательных функций работать с ним не удобно.

Копируем эти три файла в папку с сайтом.

Создаем файл index.php со следующим содержимым.

  1. <body>
  2. <?php
  3. include_once 'open_flash_chart_object.php';
  4. $baseURL = "http://".$_SERVER['HTTP_HOST'].$_SERVER[REQUEST_URI];
  5. open_flash_chart_object( 400, 250, $baseURL.'/chart-data.php', false, $baseURL );
  6. ?>
  7. </body>

Тут мы подключили open_flash_chart_object.php и вызвали функцию open_flash_chart_object, которая создает html код вставки Flash ролика.

Первый и второй параметры функции – длина и ширина графика в пикселях. Кстати, ширину можно задать в процентах (100% - все окно браузера).

Третий параметр – URL скрипта, который создает строку с данными для построения графика. В данном случае эту строку будет создавать PHP скрипт chart-data.php, который мы напишем чуть позже.

Четвертый параметр указывает, нужно ли использовать SWFObject.

Пятый – URL папки, в которой находится файл Flash ролика (без слеша в конце).

Теперь переходим к скрипту chart-data.php. Как я уже говорил, он формирует строку с данными.

  1. // создаем массив с данными
  2. $data = array();
  3. for( $i=0; $i<10; $i++ )
  4. {
  5.     $data[] = sin(pi()/5*$i);
  6. }
  7.  
  8. // подключаем класс со вспомогательными функциями
  9. // для построения графика
  10. include_once( 'open-flash-chart.php' );
  11. $g = new graph();
  12.  
  13. // Заголовок
  14. $g->title( 'Функция синуса', '{font-size: 26px;}' );
  15.  
  16. // добавляем данные на график
  17. $g->set_data( $data );
  18. // строим гистограмму
  19. $g->bar( 100, '#9933CC', 'Гистограмма', 10 );
  20.  
  21. // еще раз добавляем теже самые данные
  22. $g->set_data( $data );
  23. // строим второй график
  24. $g->line_dot( 3, 5, '#CC3399', 'График', 10 );
  25.  
  26. // подписи по оси Х
  27. $labelsX = array();
  28. for ($i = 0; $i < 10; $i++) {
  29.     $labelsX[] = round(pi()/5*$i, 2);
  30. }
  31. $g->set_x_labels($labelsX);
  32.  
  33. // максимальное и минимальное значение по оси Y
  34. $g->set_y_max( 1.2 );
  35. $g->set_y_min( -1.2 );
  36. // количество меток по оси Y
  37. $g->y_label_steps( 12 );
  38.  
  39. // отображаем данные
  40. echo $g->render();

Как видите, вся работа выполняется методами класса graph (находится в файле open-flash-chart.php).

Исходные данные для построения графика должны находится в обычном массиве. Для этого примера я взял функцию синуса (строки 2-6).

Названия функций класса graph говорят сами за себя.

title – добавляет заголовок графика (во втором параметре указываем размер шрифта).

set_data – добавляет данные на график.

bar – строит гистограмму. Параметры:
1) прозрачность;
2) цвет;
3) надпись в легенде;
4) размер шрифта в легенде.

line_dot – строит обычный график с точками. Параметры:
1) толщина линии;
2) диаметр точек;
3) надпись в легенде;
4) размер шрифта в легенде.

set_x_labels – добавляет подписи по оси Х (подписи должны находится в массиве).

set_y_max, set_y_min – ограничения по оси Y.

y_label_steps – количество меток по оси Y (в данном случае шаг получается равным 0,2).

render – формирует строку с данными для построения графика.

График, который получается в результате выполнения скрипта, показан на скриншоте в начале статьи.

Отдельно хочу отметить документацию. Автор приводит примеры кода для всех типов графиков, а их больше десятка. Так что можно не вникая в тонкости библиотеки подобрать себе готовое решение.

Если хотите поэкспериментировать с этим примером, качайте архив с ним. В архив входит не вся библиотека, а только файлы с Flash роликом и PHP классами.

До встречи!

Понравилась статья? Подпишитесь на продолжение rss link !

]]>

Добавьте эту страницу в google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

]]>

Опубликовано в HTML, PHP, Web разработка

]]>

Комментарии (14)

Вы можете отслеживать обсуждение записи с помощью RSS 2.0 rss link

Вы также можете оставить комментарий, или трекбек с Вашего сайта.

]]>
  1. Гм. хороший офис. Я и не знал что можно там строить свои графики )

  2. Я вот смотрю на тему и думаю,это каким же надо быть умным что бы с ходу во всем этом розобратся,я просто летаю в этом материале(((((

  3. Мастер ,а зачем же смотриш если тебе это все как я понял по барабану???

  4. Тут куча ошибок автор статьи делает одно а описует другое куча не венрных инклудов ппц….

    • Странно, пример в архиве нормально у меня работал, а в тексте - скопированные фрагменты кода из этого примера.
      Напишите, пожалуйста, какие именно ошибки у вас возникли.

  5. а по мне так классный скрипт, и автор нормально так, понятно, всё разложил по полочкам! автору 5 баллов.

  6. tigerrr

    Благодарю, при первом запуске понравилось

  7. Дмитрий

    Я непонимаю зачем вылаживать нерабочие кривые примеры!

  8. Виктор

    Статья полезная, примеры работают. Есть только проблема: как можно сделать так, что бы графики обновлялисьпри обновлении страницы?

    • По-моему, делать ничего не нужно ;)
      У меня график обновляется если между перезагрузками страницы изменяется chart-data.php, т.е. данные по которым строится график (для эксперимента я заменил функцию sin на cos, строка 5 последнего листинга).
      А если данные не меняются, то зачем обновлять график?

  9. Виктор

    ну вот например эксплорер обнолвляет график при переоткрыитии страницы, а В опере график висит месячной давности…
    Я хочу реализовать например, что бы при выборе определенных параметров, строился график, вот как это можно реализовать? В chart-data.php данные заносятся из базы данных и данные меняются.

  10. Виктор

    Спасибо за статью… разбираться уже буду после праздника… Похоже что придется исполизовать джаву

]]>

Оставить комментарий

* - обязательные для заполнения поля

]]>