ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Створення кругової діаграми за допомогою модуля GD:: Graph
         

     

    Інформатика, програмування

    Створення кругової діаграми за допомогою модуля GD:: Graph

    Зараз, щоб задовольнити потреби вибагливих користувачів, практично кожен Інтернет-ресурс будується на динамічному відображенні представленої інформації. Сьогодні ми розглянемо лише одну з таких можливостей, а саме - реалізацію динамічних кругових діаграм.

    Мова програмування Perl пропонує розробникам великий інструментарій для створення, обробки, зміни та управління змістом веб-сайтів. За допомогою Perl-модуля GD:: Graph створення кругової діаграми стає справою простим і доступною практично кожному.

    До Наприклад, ваш начальник хоче отримати порівняльний графік, що відображає динаміку продажів в онлайні, в звичайних магазинах і за допомогою дистриб'юторів. Сам графік повинен будуватися на основі CSV-файлу (Comma Separated Values), який щотижня експортується з Microsoft Excel і розміщується в окремій директорії в локальній мережі. Нам необхідно написати скрипт, автоматично генерує кругову діаграму на основі наявних CSV-даних.

    Лістинг 1

    1 use strict;

    2 use GD:: Graph:: pie;

    3 use Text:: CSV_XS;

    4

    5 my @ data;

    6

    7 my $ csv = new Text:: CSV_XS;

    8 open (FILE, "excel.csv") | | Die "Cannot open excel.csv: $! N";

    9 while (my $ line =) (

    10 $ csv-> parse ($ line);

    11 my @ col = $ csv-> fields;

    12 push (@ data, @ col);

    13)

    14

    15 my $ graph = new GD:: Graph:: pie (300, 300);

    16

    17 $ graph-> set (

    18 title => 'Заголовок кругової діаграми',

    19 label => 'Пояснювальна підпис',

    20 axislabelclr => 'black',

    21 '3 d '=> 1,

    22 start_angle => 90,

    23 suppress_angle => 5,

    24)

    25 or warn $ graph-> error;

    26

    27 $ graph-> set_title_font ( "/ usr/share/fonts/ttf/windows/times.ttf", 18);

    28 $ graph-> set_value_font ( "/ usr/share/fonts/ttf/windows/times.ttf", 12);

    29 $ graph-> set_label_font ( "/ usr/share/fonts/ttf/windows/times.ttf", 14);

    30

    31 $ graph-> plot (@ data) or die $ graph-> error;

    32

    33 open (GRAPH, "> graph.jpg") | | die "Cannot open graph.jpg: $! n";

    34 print GRAPH $ graph-> gd-> jpeg (100);

    В рядку 3 наведеного лістингу ми завантажуємо модуль Text:: CSV_XS, скачати безкоштовну версію якого можна на CPAN (Comprehensive Perl Archive Network). У рядку 7 створюємо новий об'єкт класу Text:: CSV_XS, відкриваємо CSV-файл у рядку 8 і зчитуємо дані з файлу в масив @ data (рядки 9-13). Рядок 10 викликає метод parse (), який розбиває рядки файлу по колонках. Сформовані колонки повертаються за допомогою методу fields () в рядку 11 і додаються у вигляді ряду в масив @ data (рядок 12). Іншими словами, замість формування масиву @ data вручну, ми можемо створити його з зовнішнього файлу (в даному випадку - CSV).

    Далі (у рядку 15) створюємо об'єкт діаграми потрібної різновиди (в даному випадку -- pie) з заданим розміром зображення.

    Третій параметр у рядку 21 дорівнює 1, що передбачає створення тривимірної кругової діаграми (значення "0" виводить двовимірний графік і використовується за замовчуванням). Далі необхідно визначити початкову точку побудови діаграми, з якої скрипт буде починати відлік секторів графіка. Значення задається в градусах і за замовчуванням дорівнює "0" (ми встановили значення "90", рядок 22). Також ми можемо встановити потрібне значення параметра suppress_angle, який визначає мінімальний розмір сектора кругової діаграми в градусах.

    При бажанні можна використовувати шрифти TrueType замість вбудованих. У рядках 27-29 вказуються назви гарнітур, що використовуються, відповідно, для заголовка діаграми, найменування секторів і пояснювальних підписів до графіка. Цифри, що йдуть після вказівки гарнітур, означають встановлений розмір шрифту.

    В рядку 33 виводиться зображення кругової діаграми в файл у форматі JPEG (або PNG). У наступному рядку параметром методу jpeg () можна задати ступінь оптимізації (якості) зображення (у відсотках).

    В даному випадку зображення діаграми виводиться у файл у графічному форматі, однак можна його вивести у стандартний потік виведення STDOUT. Це може знадобитися для створення "нальоту" діаграм відображення динамічно змінюваних даних на веб-сторінці. Для цього доведеться трохи видозмінити вищенаведений код програми.

    Лістинг 1

    32 print "Content-type: image/jpegnn";

    33 binmode (STDOUT);

    34 print $ graph-> gd-> jpeg (100);

    Щоб вивести кругову діаграму на веб-сторінці, у потрібному місці документа слід вставити наступну HTML-конструкцію:

    Список літератури

    Для підготовки даної роботи були використані матеріали з сайту http://www.soch.imperium.by

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status