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

Владимир | | HTML, PHP, Web разработка.

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

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

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 классами.

До встречи!