Создание изображений – довольно сложная и трудоемкая задача. Если не использовать специальных библиотек.
Об одной из них я и хочу рассказать.
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
со следующим содержимым.
<body> <?php include_once 'open_flash_chart_object.php'; $baseURL = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; open_flash_chart_object( 400, 250, $baseURL.'/chart-data.php', false, $baseURL ); ?> </body>
Тут мы подключили open_flash_chart_object.php
и вызвали функцию open_flash_chart_object
, которая создает html код вставки Flash ролика.
Первый и второй параметры функции – длина и ширина графика в пикселях. Кстати, ширину можно задать в процентах (100% — все окно браузера).
Третий параметр – URL скрипта, который создает строку с данными для построения графика. В данном случае эту строку будет создавать PHP скрипт chart-data.php
, который мы напишем чуть позже.
Четвертый параметр указывает, нужно ли использовать SWFObject.
Пятый – URL папки, в которой находится файл Flash ролика (без слеша в конце).
Теперь переходим к скрипту chart-data.php
. Как я уже говорил, он формирует строку с данными.
// создаем массив с данными $data = array(); for( $i=0; $i<10; $i++ ) { $data[] = sin(pi()/5*$i); } // подключаем класс со вспомогательными функциями // для построения графика include_once( 'open-flash-chart.php' ); $g = new graph(); // Заголовок $g->title( 'Функция синуса', '{font-size: 26px;}' ); // добавляем данные на график $g->set_data( $data ); // строим гистограмму $g->bar( 100, '#9933CC', 'Гистограмма', 10 ); // еще раз добавляем теже самые данные $g->set_data( $data ); // строим второй график $g->line_dot( 3, 5, '#CC3399', 'График', 10 ); // подписи по оси Х $labelsX = array(); for ($i = 0; $i < 10; $i++) { $labelsX[] = round(pi()/5*$i, 2); } $g->set_x_labels($labelsX); // максимальное и минимальное значение по оси Y $g->set_y_max( 1.2 ); $g->set_y_min( -1.2 ); // количество меток по оси Y $g->y_label_steps( 12 ); // отображаем данные 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 классами.
До встречи!