Язык
Контакты
GitHub
Поддержка
Регистрация
Войти
Логин: Пароль: Запомнить:
Пользователи
Последние сообщения
Ответить
1

Рисуем график на PHP

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#1
Вот чисто ради общего развития я решил сегодня нарисовать график спользуя PHP. Получилось довольно хорошо, правда можно было бы еще проверять максимальное входящее значение чтобы если оно больше ожидаемого график не вылозил за границы, но я добился чего хотел - просто сделал рабчий скрипт, а если мне понадобитс он в работе то я его усовершенствую, а вам просто хочу показать принцып

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
 28 
 29 
 30 
 31 
 32 
 33 
 34 
 35 
 36 
 37 
 38 
 39 
 40 
 41 
 42 
 43 
 44 
 45 
 46 
 47 
 48 
 49 
 50 
 51 
 52 
 53 
 54 
 55 
 56 
 57 
 58 
 59 
 60 
 61 
 62 
 63 
 64 
<?php header('Content-type: image/jpeg');
//создаем изображение 1000 на 500px
$im imagecreate(1000500);
//заливаем фон. У этой функции есть особенность - при первом вызове она заливает картинку а при последующих просто создает указатели на цвета
$background imagecolorallocate($im243243243);
//определяем цвета для разметки и самого графика
$line_color imagecolorallocate($im02550);
$market_color imagecolorallocate($im170170170);


//рисуем разметку(сетку)
$line imageline($im020100020$market_color);
$line imageline($im040100040$market_color);
$line imageline($im060100060$market_color);
$line imageline($im080100080$market_color);
$line imageline($im01001000100$market_color);
$line imageline($im01201000120$market_color);
$line imageline($im01401000140$market_color);
$line imageline($im01601000160$market_color);
$line imageline($im01801000180$market_color);
$line imageline($im02001000200$market_color);
$line imageline($im02201000220$market_color);
$line imageline($im02401000240$market_color);
$line imageline($im02601000260$market_color);
$line imageline($im02801000280$market_color);
$line imageline($im03001000300$market_color);
$line imageline($im03201000320$market_color);
$line imageline($im03401000340$market_color);
$line imageline($im03601000360$market_color);
$line imageline($im03801000380$market_color);
$line imageline($im04001000400$market_color);
$line imageline($im04201000420$market_color);
$line imageline($im04401000440$market_color);
$line imageline($im04601000460$market_color);
$line imageline($im04801000480$market_color);
$line imageline($im0100010001000$market_color);


//массив значений
$stats = array(23467235423243324);

//сам график
if (!empty($stats)) {
    
$x_step 0;
    
$y_step 500;
    
$cnt_rec count($stats);
    if (
$cnt_rec 1000) {
        
$dif ceil($cnt_rec 1000);
    }
    
$step_size floor(1000 count($stats));
    
    foreach(
$stats as $key => $day) {
        
$day_point 500 $day;
        
$line imageline($im$x_step$y_step$x_step $step_size$day_point$line_color);
        
$x_step $x_step $step_size;
        
$y_step $day_point;
        
//pr($x_step);
    
}
    
}
//выводим картинку
imagejpeg($im);
//удаляем картинку
imagedestroy($im);?>

При построении графика упор больше не на знания в области PHP а на математику. Но даже если с этим трудности то методом тыка можно добиться результатов. Это простой пример создания графика на PHP, но с его помощью можно создавать и очень сложные рисунки, такие как спирали и кривые Бизье.

При рисовании подобных приколов в ход идет функция imageline она рисует линию основываясь на переданных ей параметрах, таких как начальные и конечные координаты и цвет линии, а также указатель на изображение на котором эту линию нужно нарисовать.

Отредактировано автором 9 Окт 2010
Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)
1
Сейчас online: 59. Зарегистрированных: 1. Гостей: 58.