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.
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/.
{
return StrTr($text,"ŠšŽžĽľŤťŚŹśźĄą","©ą®ľĄµ«»¦¬¶Ľˇ±");
}
Hodinová návštěvnost (hourly.php)
Výsledkem našeho snažení bude např. tento graf:
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("../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)
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ů