Zoner.cz | Czechia.com | Inshop.cz | CA Czechia.cz
Nic
TOPlist
Statistika přístupů v PHP – sloupcové grafy

Dnes si povíme, jak s pomocí vynikající aplikace JpGraph vytvořit profesionální sloupcové grafy zachycující různé statistické veličiny. V našem případě to bude hodinová a denní návštěvnost.

Aplikace JpGraph a její instalace byla před nedávnem popisována v článku Profesionální grafy v PHP snadno a rychle. V dnešním článku vám představím dva sloupcové grafy, příště to budou dva koláčové grafy. Snažil jsem se vytvořit takové grafy, na kterých je dobře vidět, co všechno můžete měnit a nastavovat tak, aby vám graf plně vyhovoval.

Grafy budeme vkládat do souboru stat.php prostřednictvím tagu <img>. V parametru sql_access_date budeme předávat období, pro které se bude graf vytvářet.


// graf
echo '<p align="center"><img src="hourly.php?sql_access_date=' . URLEncode($sql_access_date) . '" border="0" alt=""></p>';

Protože JpGraph pracuje standardně s kódováním ISO-8859-2, vložíme do souboru function.php funkci Win_Iso($text), která převádí text v kódování Windows-1250 na ISO 8859-2. Pokud pracujete na jiném systému než Windows, pak tuto funkci potřebovat nebudete. Soubor umístíme přímo do složky jpgraph/src/.

function Win_Iso($text)
 {
    return StrTr($text,"ŠšŽžĽľŤťŚŹśźĄą","©ą®ľĄµ«»¦¬¶Ľˇ±");
 }

Hodinová návštěvnost (hourly.php)

Výsledkem našeho snažení bude např. tento graf:

Hodinová návštěvnost

Skripty pro jednotlivé grafy budou ve zvláštních souborech umístěných standardně v adresáři jpgraph/src/counter. Pro statistiku hodinové návštěvnosti to je soubor hourly.php. Vzhledem k tomu, že vytvoření grafu je dostatečně okomentováno přímo ve skriptu, nebudu se nyní příliš rozepisovat. Navíc práce s aplikací JpGraph je natolik intuitivní a relativně jednoduchá, že se s ní naučíte pracovat během několika desítek minut.

include("db.php");    
// připojení k databázi
include("../function.php");    
// obsahuje funkci WinIso()


// načtení souborů nutných pro vytvoření grafu
include("../jpgraph.php");
include("../jpgraph_bar.php");

$sql_access_date = StripSlashes(URLDecode($sql_access_date));
// datum


// data pro osu Y
for($i=0;$i<=23;$i++):
    $query = MySQL_Query("SELECT count(*) FROM access WHERE HOUR(access_date) = '$i' AND $sql_access_date");
    $result = MySQL_Fetch_Array($query);
    $data[] = $result["count(*)"];
// počet přístupů v jednotlivých hodinách
endfor;


// graf (velikost) a měřítko
$graph = new Graph(535,250);
$graph->SetScale("textlin");

$graph->img->SetMargin(45,30,25,40);    
// velikost okrajů
$graph->SetColor("aliceblue");    
// barva pozadí grafu
$graph->SetMarginColor("gray9");    
// barva okraje grafu
$graph->SetFrame();
// orámování
$graph->yaxis->scale->SetGrace(15);
// nastavení měřítka osy Y


// titulek a názvy os
$graph->title->Set(Win_Iso("Hodinová návštěvnost"));
$graph->xaxis->title->Set("Hodina");
$graph->yaxis->title->Set("Počet přístupů");


// nastavení fontů titulku a názvů os
$graph->title->SetFont(FF_FONT2,FS_BOLD);
$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);


// sloupcový graf
$bplot = new BarPlot($data);

$bplot->SetFillColor("deepskyblue");
// barva sloupců
$bplot->SetShadow();    
// stín sloupců


// formát, font, barva a úhel popisků u sloupců
$bplot->value->SetFormat("%d");
$bplot->value->SetFont(FF_FONT1,FS_NORMAL);
$bplot->value->SetColor("blue");
$bplot->value->SetAngle(90);
$bplot->value->Show();


// přidej sloupcový graf
$graph->Add($bplot);


// zobraz graf
$graph->Stroke();

Denní návštěvnost (daily.php)

Denní návštěvnost

include ("db.php");    
// připojení k databázi
include("../function.php");    
// obsahuje funkci WinIso()


// načtení souborů nutných pro vytvoření grafu
include ("../jpgraph.php");
include ("../jpgraph_bar.php");

$sql_access_date = StripSlashes(URLDecode($sql_access_date));    
// datum


// data pro osu Y
for($i=0;$i<=6;$i++):
    $query = MySQL_Query("SELECT count(*) FROM access WHERE WEEKDAY(access_date) = '$i' AND $sql_access_date");
    $result = MySQL_Fetch_Array($query);
    $datay[] = $result["count(*)"];    
// počet přístupů v jednotlivých dnech
endfor;


// data pro osu X
$datax = Array("Pondělí", "Úterý", "Středa", "Čtvrtek", "Pátek", "Sobota", "Neděle");


// graf (velikost) a měřítko
$graph = new Graph(400,200);
$graph->SetScale("textlin");

$graph->img->SetMargin(40,20,30,30);    
// velikost okrajů
$graph->SetMarginColor("oldlace");    
// barva pozadí grafu
$graph->SetShadow();    
// stín grafu


// nastavení titulku (font, barva)
$graph->title->Set(Win_Iso("Denní návštěvnost"));
$graph->title->SetFont(FF_FONT2,FS_BOLD);
$graph->title->SetColor("darkred");


// nastavení fontů u obou os
$graph->xaxis->SetFont(FF_FONT1,FS_NORMAL);
$graph->yaxis->SetFont(FF_VERDANA,FS_NORMAL,10);


// popisky na ose X
$graph->xaxis->SetTickLabels($datax);


// sloupcový graf
$bplot = new BarPlot($datay);

$bplot->SetWidth(0.6);    
// šířka sloupců
$bplot->SetFillGradient("gold4","gold2",GRAD_HOR);    
// nastavení barevného přechodu u sloupců
$bplot->SetColor("navy");    
// barva rámečku sloupců


// přidej sloupcový graf
$graph->Add($bplot);


// zobraz graf
$graph->Stroke();

Příštím dílem, ve kterém dokončíme vytváření profesionálních grafů, bude seriál prozatím ukončen a konečně si budete moci kompletní aplikaci stáhnout.

Předchozí díly:

Statistika přístupů v PHP – kalendář
Statistika přístupů v PHP – hodinová a denní návštěvnost
Statistika přístupů v PHP – regionální lokalizace
Statistika přístupů v PHP – domény nejvyšší úrovně
Statistika přístupů v PHP – vyhledávací fráze
Statistika přístupů v PHP – odkud přicházejí návštěvníci
Statistika přístupů v PHP – rozlišení a barevná hloubka
Statistika přístupů v PHP – detekce operačního systému
Statistika přístupů v PHP – detekce prohlížeče
Statistika přístupů v PHP – počet unikátních návštěvníků


Michal Kebrt (17.9. 2002)




Vyhledávání

Rozšířené vyhledávání



Nejčtenější







Diskuzní kotel






Četli jste už?






Hodnotilo: 71 čtenářů
Výsledek: 2,7


 Tisk
 Doporučit článek

Diskuze: Statistika přístupů v PHP – sloupcové grafy
17.09.2002, 07:40 VaKu Suuuper
17.09.2002, 12:11 Gabo Pokracovania?
17.09.2002, 12:12 Gabo Pokracovania?
17.09.2002, 12:13 The King Pár drobností
17.09.2002, 19:57 To bys chtěl vědět, co? Minuje......
18.09.2002, 21:54 Adam Haken grafy
Zobrazit všePřidat nový
Redakce Interval.cz |  Inzerce na Interval.cz |  Hledáme nové autory ISSN 1212-8651 
 © Zoner software, s.r.o., všechna práva vyhrazena, tento server dodržuje právní předpisy o ochraně osobních údajů.