piatok, 22 november 2013 15:16 Written by 4806 times
Rate this item
(4 votes)

PHP - grafy, aké jednoduché

Dnes som sa rozhodol, že zverejním časť svojich jednoduchých kódov v PHP na zobrazenie jednoduchého 3D grafu.
K dispozícii sú 3 zdrojové súbory v PHP.  Predpokladám, že programátor má už hlbšie skúsenosti s programovaním v PHP.

Poďme na to.
Najprv si prekopírujte zdrojové súbory webového do adresára a spustite vo webovom prehliadači. Okamžite uvidíte výsledok:) Poviete si, aké jednoduché....
Áno, je to jednoduché. Nebudem vysvetľovať do detailu všetky metódy triedy, ktorá graf vytvára, ale pokúsim sa aspoň jednoducho prejsť použitie (to by Vás malo zaujímať najviac)  zdrojových kódov, ktoré Vám ponúkam.
 
Subor "graph3D.php" - je zdrojový kód triedy 3D grafu. Táto trieda obsahuje všetky potrebné metódy a vlastnosti na nakreslenie jednoduchého grafu, ale aj zložitejšieho 3D grafu, dokonca aj grafu so sumarizovanými položkami. V súbore si treba akurát všimnúť konštantu "FONTDIR", ktorá nasmeruje knižnicu v PHP (na grafické rozhranie) do adresára s fontami. Ak beží webový server pod Windowsom, treba nájsť platný adresár inštalovaných fontov a prepísať ho do konštanty a súbor uložiť.  

DEFINE('FONTDIR', "C:/windows/fonts/arial.ttf"); 

Súbor "draw_graph3D.php" použije triedu grafu na vytvorenie objektu grafu s vymyslenými dátami. 


- $values - demonštrujeme vyplnenie tohto poľa dvoma spôsobmi (viď v súbore), radíme - najlepšie si vyskúšať.
- $graph = new CGraph3D(400,200); - vytvoríme objekt (v pozadí sa v podstate vytvára PNG obrázok)


- nastavíme požadované vlastnosti grafu:

  $graph->xtext = 'Pos.';
  $graph->ytext = 'Repair time [min]';
  $graph->headertext = "Repair time: $time_summary min";
  $graph->headerfontsize = 14; 

- nastavíme  vlastnosti nálepiek na položky v grafe :

  $graph->label_direction = 'horizontal';           
  $graph->label_vertical_align = 'over';
  $graph->label_horizontal_align = 'center';
  $graph->label_color = '#E1FFE1';
  $graph->label_showshadow = true;
  $graph->label_movey = -2;     

- nastavíme ostatné vlastnosti  :

  //$graph->bar_random_color = true; // ak by sme chceli farby jednotlivých položiek grafu mať sfarbené náhodne
  $graph->gradienteffect = true;     // zobraziť gradient efekt pri vykreslení položiek grafu  
  $graph->effect3D = true;           // zobraziť položky grafu v 3D
  $graph->graphangle = 35;           // uhol položky grafu v 3D stave
  $graph->zwidth = 15;               // hrúbka položky grafu v 3D stave v osi Z
  $graph->values = $values;          // hodnoty pre graf, spomenuté vyššie 

- vytvoríme graf v obrázku :

  $graph->Draw_graph();              // vykreslenie grafu do obrázka
  $graph->Putintobuffer();           // odoslanie obrázka do bufferu, ktorý sa posiela HTTP protokolom. V tejto metóde sa v hlavičke protokolu určí, že protokol obsahuje obrázok.   
  $graph = null;                     // pre istotu vyvoláme explicitne deštruktor triedy objektu, aby sa nám uvoľnila pamäť, pretože obrázky spotrebovávajú v rámci session veľa pamäte, ktorú treba poctivo uvoľňovať. Aj keď webový server uvolňuje pamäť automaticky, nie vždy je deštruktor volaný okamžite. 


 Väčšina vlastností je triviálna a myslím si, že ľahko pochopiteľná a najlepšie bude, keď si to vyskúšate prakticky sami.
 
A tretí "show_graph3D.php", ktorý si v prehliadači vyvoláte, aby ste videli vykreslený hotový graf napr. http://mojadomena/testgraf/show_graph3D.php.
Tu sa v podstate vytvorí v HTML objekt IMG - obrázok, ktorý volá súbor "draw_graph3D.php".  
 
Samotné dáta do grafu si samozrejme môžete dopĺňať aj z databáz alebo zo súborov, ale o tom niekedy inokedy.
 
Prajem veľa zábavy s grafmi (generovaných na webovom serveri) zobrazených v prehliadači.  Komplétne zdrojove kódy si môžete stiahnuť v prílohe.
 
S pozdravom AB.

 

Last modified on štvrtok, 04 september 2014 12:42
Alojz Benďák

Autor je administrátor webu a venuje sa programovaniu takmer 23 rokov.

  • prvý kontakt s počítačmi na strednej škole - PMD 1,2,3, PP06, Atari, Sinclair (programovanie v jazyku: strojový kód, basic a pascal):  2 roky
  • na VŠ - jazyky Turbo pascal a Turbo C: 1rok
  • programovanie databázového ekonomického širokoškálneho software v Delphi a C++ Borland (databázy Paradox): 8 rokov v Codex s.r.o. Nitra
  • programovanie webových aplikácií na databázach MySQL a MS SQL server: 1 roky na živnosť (firmy: Hermes Nitra, Schindler v Bratislave)
  • pracoval ako DBA v Homecredit Brno a vo VÚB Bratislava ako vyvojár + optimalizácie v SQL a PL/SQL na Oracle 11g (firma Accenture)
  • programoval programy pre súkromné firmy pre HW na skenovanie povrchov nádrží pre skladovanie tekutých palív (pristroj Leica)
  • momentálne pracuje ako DBA pod Oracle 11g a ako vyvojár vnútropodnikových databázových aplikacií v PHP, SQL, C++, C# a interface v PL/SQL: 11 rokov
  • ďalej programuje s HTML, CSS, Ajax, Javascript, VBA, MS visual C++ a C# malé podporné aplikácie
  • certifikát SQL expert for Oracle 11g   
  • spolupracuje a aktívne učí pre počítačové firmy: Lapis, IVIT v Nitre