31 / 31 / 9
Регистрация: 20.12.2011
Сообщений: 202
1

Гистограмма

11.05.2012, 08:19. Показов 5276. Ответов 2
Метки нет (Все метки)

Доброе утро, граждане.
Мне нужно сделать гистограмму, как ее строить? Нашел пару кодов, но сделать так, как хочу Я не могу.
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
<?php   
    $visites = array(138, 254, 381, 100);  
    
    $sum = 0;
    foreach($visites as $v) {
        $sum += $v;
    }
    $arifm = $sum/count($visites);
    
    header ("Content-type: image/png"); 
    $largeurImage = 300;  
    $hauteurImage = $arifm;  // Зависит от среднего арифметического
    $im = ImageCreate ($largeurImage, $hauteurImage)   
            or die ("Ошибка при создании изображения");           
    $blanc = ImageColorAllocate ($im, 255, 255, 255);   
    $noir = ImageColorAllocate ($im, 0, 0, 0);    
    $color[1] = ImageColorAllocate ($im, 52, 201, 36);  
    $color[] = ImageColorAllocate ($im, 255, 36, 0); 
    $color[] = ImageColorAllocate ($im, 42, 82, 190);  
    $color[] = ImageColorAllocate ($im, 255, 204, 0);  
    
    // проводим горизонтальную линию, ось абсцисс
    ImageLine ($im, 10, $hauteurImage-10, $largeurImage-10, $hauteurImage-10, $noir); 
    /*// выводим порядковый номер каждого фака
    for ($mois=1; $mois<=4; $mois++) { 
    ImageString ($im, 0, $mois*30, $hauteurImage-10, $mois, $noir); 
    } */
 
    // проводим вертикальную линию, чтобы ось ординат
    ImageLine ($im, 10, 10, 10, $hauteurImage-10, $noir); 
    // максимум
    $visitesMax = 2000;  
      
    // рисуем палочки  
    for ($mois=1; $mois<=4; $mois++) {  
        $hauteurImageRectangle = round(($visites[$mois-1]*$hauteurImage)/$visitesMax);  
        ImageFilledRectangle ($im, $mois*30-7, $hauteurImage-$hauteurImageRectangle, $mois*30+7, $hauteurImage-10, $color[$mois]);
        ImageString ($im, 0, $mois*30-7, $hauteurImage-$hauteurImageRectangle-10, $visites[$mois-1], $noir);  
    }  
      
    ImagePng ($im); 
?>
Здесь прямоугольники двигаются вверх, а мне надо вниз. Заменил это
PHP
1
ImageFilledRectangle ($im, $mois*30-7, $hauteurImage-$hauteurImageRectangle, $mois*30+7, $hauteurImage-10, $color[$mois]);
на
PHP
1
ImageFilledRectangle ($im, $mois*30-7, $hauteurImage+$hauteurImageRectangle, $mois*30+7, $hauteurImage-10, $color[$mois]);
Но явно что-то не то.Кто поможет?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.05.2012, 08:19
Ответы с готовыми решениями:

Гистограмма посещений страницы
В общем название темы говорит само за себя, нужно на PHP выводить Гистограмму посещений страницы за...

Гистограмма
#pragma once #include &lt;stdlib.h&gt; namespace gist { using namespace System; using namespace...

Гистограмма
Дано предложение.Нарисовать вертикальную гистограмму символов этого предложения.

Гистограмма
Программирую на C# использую VS 2008 Для моей программы нужно построить гистограмму. В которой...

2
2364 / 2236 / 575
Регистрация: 27.05.2011
Сообщений: 7,681
11.05.2012, 10:57 2
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
<?php   
    $visites = array(138, 254, 381, 100);  
    
    $sum = 0;
    foreach($visites as $v) {
        $sum += $v;
    }
    $arifm = $sum/count($visites);
    
    header ("Content-type: image/png"); 
    $largeurImage = 300;  
    $hauteurImage = $arifm;  // Зависит от среднего арифметического
    $im = ImageCreate ($largeurImage, $hauteurImage)   
            or die ("Ошибка при создании изображения");           
    $blanc = ImageColorAllocate ($im, 255, 255, 255);   
    $noir = ImageColorAllocate ($im, 0, 0, 0);    
    $color[1] = ImageColorAllocate ($im, 52, 201, 36);  
    $color[] = ImageColorAllocate ($im, 255, 36, 0); 
    $color[] = ImageColorAllocate ($im, 42, 82, 190);  
    $color[] = ImageColorAllocate ($im, 255, 204, 0);  
    
    // проводим горизонтальную линию, ось абсцисс
    ImageLine ($im, 10, $hauteurImage-210, $largeurImage-10, $hauteurImage-210, $noir); 
    /*// выводим порядковый номер каждого фака
    for ($mois=1; $mois<=4; $mois++) { 
    ImageString ($im, 0, $mois*30, $hauteurImage-10, $mois, $noir); 
    } */
 
    // проводим вертикальную линию, чтобы ось ординат
    ImageLine ($im, 10, 10, 10, $hauteurImage-10, $noir); 
    // максимум
    $visitesMax = 2000;  
      
    // рисуем палочки  
    for ($mois=1; $mois<=4; $mois++) {  
        $hauteurImageRectangle = round(($visites[$mois-1]*$hauteurImage)/$visitesMax);  
        ImageFilledRectangle ($im, $mois*29-7, $hauteurImage-210, $mois*30+7, $hauteurImageRectangle+20, $color[$mois]);
        ImageString ($im, 0, $mois*30-7, $hauteurImageRectangle+25, $visites[$mois-1], $noir);  
    }  
      
    ImagePng ($im); 
?>
1
31 / 31 / 9
Регистрация: 20.12.2011
Сообщений: 202
12.05.2012, 08:22  [ТС] 3
crautcher, благодарю!
А я то долгое время не верил, что знание библиотеки по работе с изображениями может оказаться полезным. Еще парочку вопросов.
пытаюсь изменить вот эту часть
PHP
1
2
3
4
5
6
7
8
9
 $sum = 0;
foreach($visites as $v) {
    $sum += $v;
}
$arifm = $sum/count($visites);
 
header ("Content-type: image/png"); 
$largeurImage = 300;  
$hauteurImage = $arifm;
на вот эту
PHP
1
2
3
4
5
 $max = max($visites)+50;
 
header ("Content-type: image/png"); 
$largeurImage = 300;  
$hauteurImage = $max; // зависит от самого большого числа в массиве
Но гистограмма "рушится".
И еще, как увеличить width этих столбцов? Просто скажите какие параметры нужно затрагивать.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.05.2012, 08:22
Помогаю со студенческими работами здесь

Гистограмма
Всем доброго времени суток, подскажите есть ли в питоне средства для создания гистограммы...

Гистограмма
Столбчатая диаграмма (гистограмма) представляет собой набор прямоугольников, основания которых...

гистограмма
помогите сделать легенду и чтобы квадратики были широкие uses crt; Var a,b:array of byte; ...

Гистограмма
Помогите, есть задача: с клавиатуры вводится число n &lt; 20, заполнить массив длинной n рандомными...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru