Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.57/37: Рейтинг темы: голосов - 37, средняя оценка - 4.57
21 / 21 / 2
Регистрация: 29.06.2009
Сообщений: 283

Линейный график на PHP+GD

21.09.2009, 07:19. Показов 7228. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Убил всю ночь.... и получилась фигня

PHP
1
2
3
4
5
6
7
8
9
10
11
12
while ($line = mysql_fetch_array($result, MYSQL_BOTH))
 {
  $zoom = $line[0]*6;
  $starYusd =$zoom;
  $startXusd = $startXusd+$step;
  $endXusd = $endXusd+$step;
   $endYusd  = $starYusd;
  imageline($im,$startXusd,$startYusd,$endXusd, $endYusd,$orange); // Гориз
  imageline($im,$startXusd+$Wstolb,$startYusd,$endXusd+$Wstolb, $endYusd,$orange);  //Верти
  imageline($im,$startXusd+$Wstolb,$starYusd,$startXusd, $starYusd,$orange);          //Гориз
 
 }
Это собственно то к чему пришел.... Результат не очень гуд

Как начертить график курсов? Курсы есть, получаю из БД, без проблем а вот нарисовать график че та не получается...

В примере выше попытался начертить не линейный график а как бы его назвать "Столбцы" но он получился у меня верх ногами....
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.09.2009, 07:19
Ответы с готовыми решениями:

Линейный график
Такой вопрос, есть готовый png график, который нужно написать в веб. Вопрос в том что лучше использовать? И как его реализовывать с...

линейный график
Требуется создать программу, которая бы строила линейный график по уравнению y=((2x+(3-z))/a)^1/2. Предусмореть поля для ввода...

Линейный график (сглаженный) по заданным точкам
Здравствуйте! Как у начинающего самоучки - непонятных вопросов много. Один из них, это "Как построить линейный график по заданным...

27
21 / 21 / 2
Регистрация: 29.06.2009
Сообщений: 283
29.09.2009, 19:05  [ТС]
Студворк — интернет-сервис помощи студентам
Я все библиотеки видел. идея не в том чтоб создать график.
А в том что это нужно сделать на php+gd и чтоб я понял как это делать. И мне нужен самый простой вариант без лишних наворотов.

Добавлено через 1 минуту
Ну самому ни как не получается
0
Любитель давать советы
 Аватар для Alexiski
342 / 135 / 14
Регистрация: 12.01.2009
Сообщений: 511
29.09.2009, 19:49
Тут совсем немного подправить. И даже проще.
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
65
66
67
<?php 
function my_draw($im, $kurs, $kol, $color, $max)
{
/* константы */
  $leftgap = 45;
  $rightgap = 15;
  $topgap = 15;
  $bottomgap = 45;
 
  $xmax = imagesx($im);
  $ymax = imagesy($im);
 
  $xframe = $xmax - $leftgap - $rightgap;
  $yframe = $ymax - $topgap - $bottomgap;
 
  foreach ($kurs as $i => $k)
  {
    $x1 = $leftgap + ($i-1)*$xframe/($kol-1);
    $y1 = $ymax-$bottomgap-$k*$yframe/$max;
    if ($i > 1)
    {
      imageline($im, $x0, $y0, $x1, $y1, $color);
    }
    $x0 = $x1;
    $y0 = $y1;
  }
}
 
function scaledraw($im, $max, $color)
{
/* константы */
  $leftgap = 10;
  $rightgap = 45;
  $topgap = 15;
  $bottomgap = 45;
 
  $ymax = imagesy($im);
  $yframe = $ymax - $topgap - $bottomgap;
 
  for ($scale = 0; $scale < $max; $scale += 5)
  {
    $y = $ymax-$bottomgap-$scale*$yframe/$max;
    imagestring($im, 2, $leftgap, $y-7 , sprintf("%.2f", $scale), $color);
    imageline($im, $rightgap-3, $y, $rightgap, $y, $color);
  }
}
 
header ('Content-type: image/png');
$im = imagecreatetruecolor(300, 400);
 
$kurs1 = array(1=>31.20, 31.30, 31.01, 29.40, 32.10);
$kurs2 = array(1=>45.20, 44.30, 40.01, 42.40, 44.10);
$kurs3 = array(1=>15.20, 20.30, 15.01, 17.40, 15.10);
 
$color1 = imagecolorallocate($im, 192, 192, 0);
$color2 = imagecolorallocate($im, 0, 0, 255);
$color3 = imagecolorallocate($im, 0, 255, 0);
 
my_draw($im, $kurs1, 5, $color1, 45.20);
my_draw($im, $kurs2, 5, $color2, 45.20);
my_draw($im, $kurs3, 5, $color3, 45.20);
 
scaledraw($im, 45.20, $color3);
 
imagepng($im);
imagedestroy($im);
?>
0
21 / 21 / 2
Регистрация: 29.06.2009
Сообщений: 283
29.09.2009, 19:56  [ТС]
Спасибо, будем пробовать.

Добавлено через 5 минут
мда Колебания курса на столько маленькие, что вообще не видно изменения графика
0
Любитель давать советы
 Аватар для Alexiski
342 / 135 / 14
Регистрация: 12.01.2009
Сообщений: 511
29.09.2009, 20:32
Значит, надо еще и снизу обрубать.. Сейчас поправлю

Добавлено через 29 минут
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
65
66
67
68
69
70
<?php 
function my_draw($im, $kurs, $kol, $color, $min, $max)
{
/* константы */
  $leftgap = 45;
  $rightgap = 15;
  $topgap = 15;
  $bottomgap = 45;
 
  $xmax = imagesx($im);
  $ymax = imagesy($im);
 
  $xframe = $xmax - $leftgap - $rightgap;
  $yframe = $ymax - $topgap - $bottomgap;
 
  foreach ($kurs as $i => $k)
  {
    $x1 = $leftgap + ($i-1)*$xframe/($kol-1);
    $y1 = $ymax-$bottomgap-($k-$min)*$yframe/($max-$min);
    if ($i > 1)
    {
      imageline($im, $x0, $y0, $x1, $y1, $color);
    }
    $x0 = $x1;
    $y0 = $y1;
  }
}
 
function scaledraw($im, $min, $max, $color)
{
/* константы */
  $leftgap = 10;
  $rightgap = 45;
  $topgap = 15;
  $bottomgap = 45;
 
  $ymax = imagesy($im);
  $yframe = $ymax - $topgap - $bottomgap;
 
  for ($scale = 0; $scale < $max; $scale += 5)
  {
    if ($scale > $min)
    {
      $y = $ymax-$bottomgap-($scale-$min)*$yframe/($max-$min);
      imagestring($im, 2, $leftgap, $y-7 , sprintf("%.2f", $scale), $color);
      imageline($im, $rightgap-3, $y, $rightgap, $y, $color);
    }
  }
}
 
header ('Content-type: image/png');
$im = imagecreatetruecolor(300, 400);
 
$kurs1 = array(1=>31.20, 31.30, 31.01, 29.40, 32.10);
$kurs2 = array(1=>45.20, 44.30, 40.01, 42.40, 44.10);
$kurs3 = array(1=>15.20, 20.30, 15.01, 17.40, 15.10);
 
$color1 = imagecolorallocate($im, 192, 192, 0);
$color2 = imagecolorallocate($im, 0, 0, 255);
$color3 = imagecolorallocate($im, 0, 255, 0);
 
my_draw($im, $kurs1, 5, $color1, 15.01, 45.20);
my_draw($im, $kurs2, 5, $color2, 15.01, 45.20);
my_draw($im, $kurs3, 5, $color3, 15.01, 45.20);
 
scaledraw($im, 15.01, 45.20, $color3);
 
imagepng($im);
imagedestroy($im);
?>
0
21 / 21 / 2
Регистрация: 29.06.2009
Сообщений: 283
30.09.2009, 11:10  [ТС]
во че получилось
0
21 / 21 / 2
Регистрация: 29.06.2009
Сообщений: 283
30.09.2009, 11:19  [ТС]
можно сделать сетку? И собственно все наверно
Вообще, в предыдущих постах был скринн линейного графика, вот он бы подошел бы в самый раз
0
Любитель давать советы
 Аватар для Alexiski
342 / 135 / 14
Регистрация: 12.01.2009
Сообщений: 511
01.10.2009, 00:34
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<?php 
function my_draw($im, $kurs, $kol, $color, $min, $max)
{
/* константы */
  $leftgap = 45;
  $rightgap = 15;
  $topgap = 15;
  $bottomgap = 45;
 
  $xmax = imagesx($im);
  $ymax = imagesy($im);
 
  $xframe = $xmax - $leftgap - $rightgap;
  $yframe = $ymax - $topgap - $bottomgap;
 
  foreach ($kurs as $i => $k)
  {
    $x1 = $leftgap + ($i-1)*$xframe/($kol-1);
    $y1 = $ymax-$bottomgap-($k-$min)*$yframe/($max-$min);
    if ($i > 1)
    {
      imageline($im, $x0, $y0, $x1, $y1, $color);
    }
    $x0 = $x1;
    $y0 = $y1;
  }
}
 
function scaledraw($im, $kol, $color, $min, $max)
{
/* константы */
  $left = 5;
  $leftgap = 45;
  $rightgap = 15;
  $topgap = 15;
  $bottomgap = 45;
 
  $xmax = imagesx($im);
  $ymax = imagesy($im);
 
  $xframe = $xmax - $leftgap - $rightgap;
  $yframe = $ymax - $topgap - $bottomgap;
 
  for ($scale = 0; $scale <= $max; $scale += 5)
  {
    if ($scale >= $min)
    {
      $y = $ymax-$bottomgap-($scale-$min)*$yframe/($max-$min);
      imagestring($im, 2, $left, $y-7 , sprintf("%.2f", $scale), $color);
      imageline($im, $leftgap, $y, $xmax - $rightgap, $y, $color);
    }
  }
  imageline($im, $leftgap, $ymax-$bottomgap, $xmax - $rightgap, $ymax-$bottomgap, $color);
  imageline($im, $leftgap, $topgap, $xmax - $rightgap, $topgap, $color);
 
  for ($i = 0; $i < $kol; $i++)
  {
    imageline($im, $leftgap + $i*$xframe/($kol-1), $topgap, $leftgap + $i*$xframe/($kol-1), $ymax-$bottomgap, $color);
  }
 
}
 
header ('Content-type: image/png');
$im = imagecreatetruecolor(300, 400);
 
$kurs1 = array(1=>31.20, 31.30, 31.01, 29.40, 32.10);
$kurs2 = array(1=>45.20, 44.30, 40.01, 42.40, 44.10);
$kurs3 = array(1=>15.20, 20.30, 15.01, 17.40, 15.10);
 
$color0 = imagecolorallocate($im, 80, 80, 80);
 
$color1 = imagecolorallocate($im, 192, 192, 0);
$color2 = imagecolorallocate($im, 0, 0, 255);
$color3 = imagecolorallocate($im, 0, 255, 0);
 
scaledraw($im, 5, $color0, 15, 48);
 
my_draw($im, $kurs1, 5, $color1, 15, 48);
my_draw($im, $kurs2, 5, $color2, 15, 48);
my_draw($im, $kurs3, 5, $color3, 15, 48);
 
imagepng($im);
imagedestroy($im);
?>
Миниатюры
Линейный график на PHP+GD  
0
21 / 21 / 2
Регистрация: 29.06.2009
Сообщений: 283
01.10.2009, 10:57  [ТС]
прикольно, отличный график Щас будем тестить
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.10.2009, 10:57
Помогаю со студенческими работами здесь

Постоянно обновляемый линейный график Chart
Добрый день! Подскажите есть ли возможность в Chart сделать график постоянно обновляемым без маштабирования? То есть к примеру как...

Линейный Градиент на PHP
Для одного проекта требуется создать скрипт на PHP для создания изображения с определенной шириной и высотой с переливанием цвета.

Нелинейный график в линейный - как это сделать информативнее и что делать с коэффициентами?
Вопрос такой - правильно ли мыслю и как называется то, что я пишу. (конечно в общих чертах знаю, но неожиданно понял, что не понимаю...

PHP+MySQL= График
Как построить график используя данные из базы MySQL? Самый простой и понятный способ

Создать график на php по таблице
Здравстуйте, помогите пожалуйста создать график на php, вот по этой ниже написанной таблицы ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru