Ответить
1
Рисуем график на PHP
Отправлено: 9 Окт 2010#1
Вот чисто ради общего развития я решил сегодня нарисовать график спользуя PHP. Получилось довольно хорошо, правда можно было бы еще проверять максимальное входящее значение чтобы если оно больше ожидаемого график не вылозил за границы, но я добился чего хотел - просто сделал рабчий скрипт, а если мне понадобитс он в работе то я его усовершенствую, а вам просто хочу показать принцып
При построении графика упор больше не на знания в области PHP а на математику. Но даже если с этим трудности то методом тыка можно добиться результатов. Это простой пример создания графика на PHP, но с его помощью можно создавать и очень сложные рисунки, такие как спирали и кривые Бизье.
При рисовании подобных приколов в ход идет функция imageline она рисует линию основываясь на переданных ей параметрах, таких как начальные и конечные координаты и цвет линии, а также указатель на изображение на котором эту линию нужно нарисовать.
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(1000, 500);
//заливаем фон. У этой функции есть особенность - при первом вызове она заливает картинку а при последующих просто создает указатели на цвета
$background = imagecolorallocate($im, 243, 243, 243);
//определяем цвета для разметки и самого графика
$line_color = imagecolorallocate($im, 0, 255, 0);
$market_color = imagecolorallocate($im, 170, 170, 170);
//рисуем разметку(сетку)
$line = imageline($im, 0, 20, 1000, 20, $market_color);
$line = imageline($im, 0, 40, 1000, 40, $market_color);
$line = imageline($im, 0, 60, 1000, 60, $market_color);
$line = imageline($im, 0, 80, 1000, 80, $market_color);
$line = imageline($im, 0, 100, 1000, 100, $market_color);
$line = imageline($im, 0, 120, 1000, 120, $market_color);
$line = imageline($im, 0, 140, 1000, 140, $market_color);
$line = imageline($im, 0, 160, 1000, 160, $market_color);
$line = imageline($im, 0, 180, 1000, 180, $market_color);
$line = imageline($im, 0, 200, 1000, 200, $market_color);
$line = imageline($im, 0, 220, 1000, 220, $market_color);
$line = imageline($im, 0, 240, 1000, 240, $market_color);
$line = imageline($im, 0, 260, 1000, 260, $market_color);
$line = imageline($im, 0, 280, 1000, 280, $market_color);
$line = imageline($im, 0, 300, 1000, 300, $market_color);
$line = imageline($im, 0, 320, 1000, 320, $market_color);
$line = imageline($im, 0, 340, 1000, 340, $market_color);
$line = imageline($im, 0, 360, 1000, 360, $market_color);
$line = imageline($im, 0, 380, 1000, 380, $market_color);
$line = imageline($im, 0, 400, 1000, 400, $market_color);
$line = imageline($im, 0, 420, 1000, 420, $market_color);
$line = imageline($im, 0, 440, 1000, 440, $market_color);
$line = imageline($im, 0, 460, 1000, 460, $market_color);
$line = imageline($im, 0, 480, 1000, 480, $market_color);
$line = imageline($im, 0, 1000, 1000, 1000, $market_color);
//массив значений
$stats = array(2, 3, 4, 6, 7, 23, 54, 2, 32, 43, 324);
//сам график
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: 98. Зарегистрированных: 0. Гостей: 98.