Созданная и поддерживаемая Жан-Дэмиеном Поголотти, системным инженером из Тулузы, Франция, pChart — это библиотека, которая создает сглаженные диаграммы и графики с использованием PHP. Этот объектно-ориентированный код был недавно переработан и позволяет легко добавлять красивые, привлекательные данные. Библиотека бесплатна для некоммерческого использования и для включения в распространяемое программное обеспечение GPL; лицензионные планы для других целей начинаются всего с 50 €. В этой статье я расскажу вам об установке pChart и использовании его для создания базовой диаграммы, линейной диаграммы и графика графика.
Установка
pChart любит PHP 5+ и требует расширения GD и FreeType. Они должны быть установлены и включены по умолчанию с версией 5, но это хорошая идея, чтобы дважды проверить с помощью функции phpinfo()
Функция генерирует полное описание вашей установки PHP. Если вы видите раздел «gd», в котором сообщается, что в его выводе включена поддержка GD и Free Type, вы сможете использовать pChart.
Если вы работаете в локальной системе разработки, не забудьте проверить хост-сервер перед развертыванием приложения. Схема общего хостинга не должна создавать никаких проблем, но если вы используете VPS, вам, возможно, придется попросить администратора перекомпилировать PHP с поддержкой GD и FreeType, если она отсутствует.
pChart можно скачать с www.pchart.net/download . На момент написания статьи последняя версия библиотеки — 2.1.3. Загрузите библиотеку и запишите контрольную сумму MD5, указанную рядом с ней на веб-странице; Рекомендуется проверить контрольную сумму загружаемого файла, чтобы убедиться, что они совпадают. В системах Unix вы можете проверить контрольную сумму следующим образом:
jajeronymo @ web1: ~ $ md5sum pChart2.1.3.zip 7895f71126638cbfb73b69c987418107 pChart2.1.3.zip
Затем распакуйте пакет. В моем случае содержимое автоматически помещается в папку pChart2.1.3
Прочитайте файл readme.txt
Затем либо переместите папку, либо создайте символическую ссылку на нее (или обе), в зависимости от потребностей вашего приложения.
jajeronymo @ web1: ~ $ unzip pChart2.1.3.zip jajeronymo @ web1: ~ $ sudo -i [sudo] пароль для jajeronymo: ******** root @ web1: ~ # mv /home/jajeronymo/pChart2.1.3 / srv / www / lib / root @ web1: ~ # cd / srv / www / lib root @ web1: / srv / www / lib # ln -s pChart2.1.3 pChart
Вы уже читали файл readme.txt
Нет !? Сделай это сейчас, пожалуйста. Это здоровая привычка.
Теперь вы можете использовать операторы require_once
Документация предлагает напоминание о том, что они должны быть включены после начала сеанса (если вы их используете) и перед отправкой чего-либо в браузер, в противном случае PHP может выдать печально известную ошибку «заголовки уже отправлены».
<?php
session_start();
require_once "../lib/pChart/class/pDraw.class.php";
require_once "../lib/pChart/class/pImage.class.php";
require_once "../lib/pChart/class/pData.class.php";
Выше я использовал полные относительные пути, потому что PHP будет искать включенные файлы только в нескольких выбранных каталогах по умолчанию, таких как текущий рабочий каталог, /usr/share/php
/usr/share/pear
Вы можете использовать set_include_path()
<?php
define("PCHART_PATH", /srv/www/lib/pChart");
set_include_path(get_include_path() . PATH_SEPARATOR . PCHART_PATH);
require_once "class/pDraw.class.php";
...
Создать диаграмму одной серии
Независимо от того, насколько сложна диаграмма, диаграмма pChart создается в три этапа: определите данные, создайте файл изображения и выведите файл. Начнем с определения данных.
Данные обычно поступают из базы данных в реальных приложениях, но в этом руководстве они будут определены в самом сценарии как массив. Давайте использовать первые восемь значений чисел Фибоначчи в качестве набора данных:
<?php
$myDataset = array(0, 1, 1, 2, 3, 5, 8, 13);
pChart является объектно-ориентированным. Вы просто создаете объект данных, который является экземпляром класса pData
addPoints()
<?php
$myData = new pData();
$myData->addPoints($myDataset);
Вы сделали с первого шага. Теперь вам нужно определить объект изображения для выражения $myData
Этот объект является экземпляром 500 × 300 пикселей класса pImage
<?php
$myImage = new pImage(500, 300, $myData);
Диаграммы обычно используют текстовые метки для определения значений. Вы можете указать, какое семейство и размер шрифта использовать с методом setFontProperties()
<?php
$myImage->setFontProperties(array(
"FontName" => PCHART_PATH . "/fonts/GeosansLight.ttf",
"FontSize" => 15));
Очень важно определить правильный путь к шрифту! Здесь я использовал один из шрифтов, поставляемых с pChart, который находится в pChart/fonts
Поскольку мой корневой скрипт находится за пределами pChart/
Если путь указан неверно, вы получите предупреждение «Не удалось найти / открыть шрифт», и на диаграмме не будет отображаться текст.
Хотя размер изображения составляет 500 × 300 пикселей, фактическая площадь диаграммы должна быть меньше, чем для размещения меток осей X и Y. Метод setGraphArea()
<?php
$myImage->setGraphArea(25,25, 475,275);
Кроме того, некоторые диаграммы нуждаются в различных горизонтальных и вертикальных масштабах для максимальной читаемости. В pChart есть десятки параметров для настройки масштаба, но для простоты давайте просто используем значения по умолчанию:
<?php
$myImage->drawScale();
Некоторые диаграммы требуют вызова drawScale()
Теперь пришло время создать правильную диаграмму. В настоящее время pChart предлагает 14 различных типов базовых диаграмм, каждая из которых имеет множество настраиваемых параметров. Я просто хочу простую гистограмму с параметрами по умолчанию:
<?php
$myImage->drawBarChart();
На этом этапе $myImage
Вызов метода Render()
null
Или вы можете указать местоположение файла в качестве аргумента, и Render()
<?php
header("Content-Type: image/png");
$myImage->Render(null);
Когда вы запускаете скрипт PHP, ваш браузер должен показать вам диаграмму, подобную этой:
Диаграмма из трех серий
Сейчас я покажу вам более сложный пример с линейными и графическими диаграммами, чтобы показать три ряда: квадрат, куб и четвертые степени целых чисел от 0 до 4. Начните с создания ряда в виде программно заполненных массивов:
<?php
$squareSeries = array();
$cubeSeries = array();
$fourthSeries = array();
for ($i = 0; $i <= 4; $i++) {
$squareSeries[$i] = pow($i, 2);
$cubeSeries[$i] = pow($i, 3);
$fourthSeries[$i] = pow($i, 4);
}
Создайте новый объект данных и добавьте в него ряд с помощью addPoints()
<?php
$myPowersData = new pData();
$myPowersData->addPoints($squareSeries,"Square");
$myPowersData->addPoints($cubeSeries,"Cube");
$myPowersData->addPoints($fourthSeries,"Fourth");
Использование разных цветов для каждой серии поможет сделать диаграмму более удобной для чтения. Вы можете установить цвета для каждой серии, используя метод setPalette()
Он использует массив, указывающий желаемый цвет в нотации RGBa . Здесь я установлю цвет для квадратов серии: темно-красный, кубики — зеленый и четвертый ряд — синий:
<?php
$myPowersData->setPalette("Square",
array("R" => 240,"G" => 16, "B" =>16, "Alpha" => 100));
$myPowersData->setPalette("Cube",
array("R" => 16, "G" => 240, "B" => 16, "Alpha" => 100));
$myPowersData->setPalette("Fourth",
array("R" => 16, "G" => 16, "B" => 240, "Alpha" => 100));
Для объекта изображения я буду использовать тот же размер, что и раньше, но я укажу другое семейство шрифтов и размер шрифта:
<?php
$myPowersImage = new pImage(500,300, $myPowersData);
$myPowersImage->setFontProperties(array(
"FontName" => PCHART_PATH . "/fonts/MankSans.ttf",
"FontSize" => 12));
Затем увеличьте границы для размещения больших фигур и используйте масштабирование по умолчанию:
<?php
$myPowersImage->setGraphArea(40,40, 460,260);
$myPowersImage->drawScale();
Наконец, попросите pChart нарисовать линейную диаграмму с помощью drawLineChart()
<?php
$myPowersImage->drawLineChart();
header("Content-Type: image/png");
$myPowersImage->Render(null);
Сюжетная диаграмма похожа на линейную диаграмму с точками для обозначения точных координат. Чтобы нарисовать диаграмму для тех же наборов данных, все, что вам нужно сделать, это вместо этого вызвать drawPlotChart()
Вам не нужно переопределять ни наборы данных, ни объект изображения:
<?php
$myPowersImage->drawPlotChart();
header("Content-Type: image/png");
$myPowersImage->Render(null);
Снова запустите скрипт и проверьте графики в вашем браузере.
Это хорошая идея, чтобы добавить описательные метки и легенду к вашим диаграммам, чтобы идентифицировать серию. Методы drawText()
drawLegend()
Метод drawText()
Хотя доступно множество параметров настройки, я укажу только цвет и размер шрифта. Добавьте эту строку перед вызовом drawPlotChart()
<?php
$myPowersImage->drawText(150,50, "The First Three Powers",
array("R" => 0, "G" => 64, "B" => 255, "FontSize" => 20));
Аналогично, drawLegend()
Я создам один с цветными кругами (LEGEND_FAMILY_CIRCLE), светлым фоном и более темной рамкой. Шрифт такой же, как и для текста, и я размещу легенду на 70 100, чтобы держаться подальше от линий сюжета. Добавьте эту строку под вызовом drawText()
<?php
$myPowersImage->drawLegend(70,100,
array("R" => 220, "G" => 220, "B" => 220,
"FontR" => 0, "FontG" => 64, "FontB" => 255,
"BorderR" => 80, "BorderG" => 80, "BorderB" => 80,
"FontSize" => 12, "Family" => LEGEND_FAMILY_CIRCLE));
Вывод
Эх бен дис донк! pChart — удивительно простая библиотека для профессиональных графиков и диаграмм. Я только поцарапал поверхность того, на что он способен в статье; он имеет сотни настроек и настроек. И даже для несвободных приложений pChart справедливо оценена. Мерси Beaucoup, Жан-Дэмиен!
Если вы заинтересованы в просмотре полного исходного кода, который использовался для создания графики в этой статье, вы можете найти его на GitHub.
Изображение через ungureanu / Shutterstock