Reklama

zonerbooks.cz | zoner.cz | czechia.com | regzone.cz | inshop.cz | inmail.cz | zonerpress.cz | zonerantivirus.com | zonerama.cz

interval.cz

Profesionální grafy v PHP snadno a rychle

29. 05. 2002 | Jiří Sobotka | PHP | Komentáře: 1

Na internetu lze nalézt nepřeberné množství více či méně povedených skriptů a knihoven pro PHP. Problémem ale často zůstává vybrat si ty z nich, které jsou opravdu kvalitní. Pokusím se vám ulehčit práci s programováním aplikací za pomoci již napsaných knihoven a skriptů. V tomto díle si ukážeme, jak si lze usnadnit práci při generování obrázkových grafů.

Generování obrázkových grafů v PHP tak, aby vypadaly k světu, je velmi pracné. K usnadnění tohoto úkolu, nám ale může velmi dobře posloužit soubor knihoven JpGraph.

JpGraph je přídavná knihovna do PHP, která není standardní součastí distribuce PHP. Je napsaná v prostředí UNIXu, ale odzkoušená a plně funkční též pod Windows. Je plně objektově orientovaná a naprogramována v PHP. Její použití je snadné a vyžaduje pouze základní znalosti programování v PHP.

Pomocí JpGraph můžeme kreslit, resp. generovat následující grafy:

  • sloupcové
  • bodové
  • linkové
  • plošné
  • 3D
  • koláčové
  • pavučinové

Výše jmenované typy grafů lze vykreslovat v mnoha podobách. Pro konkrétnější představu použití a nastínění nepřeberných možností této knihovny poslouží zde uvedený příklad grafu a tato obsáhlá galerie ukázek.

Download

Příklad

Ukázka PHP kódu pro vygenerování 3D "koláče" s klikací mapou:

// prilinkovani potrebnych knihoven pro vykresleni 3D kolace
include ("./jpgraph.php");
include ("./jpgraph_pie.php");
include ("./jpgraph_pie3d.php");
// vstupni data
$data = array(16,8,6,66,4);
// vytvoreni kolace, jeho velikost a stin
$graph = new PieGraph(350,200);
$graph->SetShadow();
// nastaveni textu a fontu titulku
$graph->title->Set("Sledovanost TV v % úterý 10.5.2002 20:00");
$graph->title->SetFont(FF_FONT1,FS_BOLD);
// parametry kolace, barevne schema, popisky
$p1 = new PiePlot3D($data);
$p1->SetTheme("sand");
$p1->SetLegends(array("NOVA (%d)","ČT1 (%d)","PRIMA (%d)","ČT2 (%d)","Ostatní (%d)"));
$targ=array("?v=NOVA","?v=ČT1","?v=PRIMA","?v=ČT2","?v=ostatni");
$alts=array("NOVA","ČT1","PRIMA","ČT2","Ostatni");
$p1->SetCSIMTargets($targ,$alts);
// pouziti hodnot v procentech
$p1->SetLabelType(1);
$p1->value->SetFormat("%d kr");
// vystrceni konkretniho dilku
$p1->ExplodeSlice(3);
// umisteni kolace do obrazku
$p1->SetCenter(0.4,0.5);
$graph->Add($p1);
// zobrazeni grafu
$graph->Stroke(GenImgName());
// html kod pro zobrazeni obrazku s grafem a klikaci mapy
echo $graph->GetHTMLImageMap("myimagemap");
echo "<img src=\"".GenImgName()."\" ISMAP USEMAP=\"#myimagemap\" border=0>";
?>

Výstup je zobrazen na následujícím obrázku:


NOVA ČT1 PRIMA ČT2 Ostatni

Podrobný popis jednotlivých parametrů pro všechny typy grafů naleznete v manuálu. Ten je mimochodem velmi podrobný a bohatý na příklady a konkrétní ukázky.

Požadavky

  • PHP 4.0.2 a vyšší (doporučuji použít poslední verzi)
  • součástí PHP přilinkovaná grafická knihovna GD 1.8.x a vyšší (funkčnost a verzi vaší knihovny zjistíte např. použitím funkce phpinfo())

Instalace

  1. rozbalte a nakopírujte zip archiv s JpGraph do adresáře, v němž lze spouštět PHP skripty
  2. rozbalte TTF fonty (doporučuji nakopírovat fonty do adresáře ttf/ a ten umístit do adresáře, ve kterém máte soubor jpgraph.php)
  3. otevřete ve svém oblíbeném editoru soubor jpgraph.php a upravte
    • cestu k cache adresáři (řádek 19)
    • cestu k adresáři, kde ma cache váš web server (25)
    • cestu k adresáři s TTF fonty (28), které jsou v samostatném zip souboru (pokud jste se drželi mého předchozího doporučení, pak stačí jen upravit hodnotu na cestu "./")
    • nastavení GD knihovny (40); pokud nemáte verzi 2.x, musí být nastavena na false, jinak může být true
    • na UNIX operačních systémech je třeba ještě nastavit řádky (109 a 113), skupinu a práva, pod kterými se budou dokumenty cachovat
    • ostatní údaje není nutno editovat (pro 100% funkčnost však doporučuji projít si všechny proměnné a nastavit je dle vlastních potřeb)
  4. zkontrolujte funkčnost na některém z příkladů v adresáři Examples/
  5. pokud vše neproběhne v pořádku, pak mi nezbývá než vám doporučit řídit se chybovou hláškou či podrobně přečíst FAQ na stránkach JpGraphu.

Popis knihoven

  • jpgraph.php – základní knihovna, musí být přilinkována pokaždé

Pro kreslení grafu je třeba nalinkovat jednu či více z následujících knihoven

  • jpgraph_log.php – rozšíření pro kreslení logaritmického popisu os X a Y
  • jpgraph_line.php – rozšíření pro možnost kreslit jakékoli linkové grafy
  • jpgraph_bar.php – rozšíření pro kreslení sloupcových grafů
  • jpgraph_error.php – rošíření pro kreslení chybových grafů (myšleno jako hodnot, které udávají chybu např. v bodě)
  • jpgraph_scatter.php – rozšíření pro kreslení bodových grafů
  • jpgraph_spider.php – rozšíření pro kreslení pavučinových grafů
  • jpgraph_pie.php – rozšíření pro kreslení koláčových grafů
  • jpgraph_pie3d.php – rozšíření pro kreslení 3D koláčů

Ostatní knihovny potřebné pro funkci předchozích skriptů

  • jpgraph_canvas.php – knihovna nedokumentovaná, používaná autorem při tvorbě JpGraphu
  • jpgraph_gantt.php – knihovna nedokumentovaná
  • jpgraph_odo.php – knihovna nedokumentovaná

JpGraph tedy ve stručnosti nabízí:

  • nepřeberné množství typů grafů
  • možnosti vykreslení (osy, popisky, pozadí, ...)
  • velmi snadná práce (nastavení, předávaní parametrů)
  • automatický výběr formátu (JPG, PNG, GIF)
  • velmi podrobná a obsáhlá dokumentace
  • generování klikacích map
  • logaritmické osy
  • anti-alising u čar (bohužel nefunguje u koláčů)
  • poměrně snadná možnost úpravy přehledných knihoven
  • a mnoho dalších, dle mého skromného názoru méně důležitých vlastností

Na závěr je třeba dodat, že použití JpGraphu je podřízeno licenci QPL 1.0.

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.


Reklama


Další aktuální články na interval.cz

Tematicky související články

Dejte vědět i ostatním o článku

Komentáře ke článku

Přidat nový komentář

Václav Dostál

Autor komentáře: Václav Dostál

Datum vložení: 28. Červenec 2011, 00:38:45

Bohužel se mi to nepodařilo "rozchodit", i když to rozbalím do adresáře, který znamená http://localhost - nezobazí se buď nic anebo zpráva: obrázek nelze zobrazit, protože obsahuje chyby.
Co s tím?
vaclavdostal@centrum.cz

Zpět na začátek komentářů | Zpět na začátek článku

Přidat nový komentář

Jméno a e-mail jsou nepovinné. Příspěvky obsahující odkaz jsou moderovány.

Zoner AntiVirus Free pro Android
zabezpečte si svůj smartphone, zdarma
Profesionální eshop Zoner inShop od 990 Kč.
Reklama
Reklama

Syndikace

hledáme nové autory | redakce interval.cz | reklama na interval.cz

© ZONER software, a.s., všechna práva vyhrazena, interval.cz dodržuje právní předpisy o ochraně osobních údajů. Powered by WordPress.