<HTML>
<HEAD><TITLE>as-diagrams: ìîäóëü âûâîäà äèàãðàìì (bar charts)</TITLE>
<META http-equiv="Content-Type" Content="text/html; charset=windows-1251">
<!-- link href="styles.css" rel="stylesheet" type="text/css" -->
<STYLE TYPE="text/css">
<!--
body { font-family:arial,helvetica;font-size:12px; }
pre { color:#0000FF; }
td { font-family:arial,helvetica;font-size:12px;}
tr.odd { background-color: #F0F0F8; color:#000000; }
tr.even { background-color: #E0E0F0; color:#000000; }
h4 { background-color: #E0E0F0; color:#000000;
text-align: left; }
h5 { background-color: #E0E0F0; color:#000000;
text-align: center; }
-->
</STYLE>
</head>
<BODY>
<H3>as-diagrams: ìîäóëü âûâîäà äèàãðàìì (bar charts)</H3>
<div align=right><a href="as-diagrams.htm">English version</a><br><br></div>
<p>
Ïðåäëàãàåìûé PHP êëàññ ïîçâîëÿåò ñîáèðàòü è âûâîäèòü Âàøè äàííûå â âèäå äèàãðàìì - "ñòîëáèêîâ"
íå èñïîëüçóÿ ãðàôè÷åñêèå áèáëèîòåêè òèïà GD, ÷òî ïîçâîëÿåò óìåíüøèòü íàãðóçêó íà ñåðâåð
è ðàçìåùàòü ñâîè ñòðàíèöû ó ïðîâàéäåðîâ, íå îáåñïå÷èâàþùèõ ïîääåðæêó gd.
<p>
Íèæå äàåòñÿ èíñòðóêöèÿ ïî âñòðàèâàíèþ ìîäóëÿ â Âàø ñàéò è åãî èñïîëüçîâàíèþ.
<br>
<H3>Óñòàíîâêà ìîäóëÿ as-diagrams íà ñàéò</H3>
<ol>
<li>Çàãðóçèâ äèñòðèáóòèâ as-diagrams.zip, ðàñïàêóéòå åãî âî âðåìåííóþ ïàïêó.
Åñëè ïëàíèðóåòñÿ åãî èñïîëüçîâàíèå âî ìíîãèõ ñòðàíè÷êàõ ñàéòà, èìååò ñìûñë ñêîïèðîâàòü
îñíîâíîé ôàéë <b>as-diagrams.php</b> â îäíó èç ïàïîê, ïåðå÷èñëåííûõ â ïåðåìåííîé include_path
Âàøåãî íàñòðîå÷íîãî php.ini.
 ïðîòèâíîì ñëó÷àå ïîëîæèòå php-ìîäóëü â îäíó ïàïêó ñî ñêðèïòîì, èç êîòîðîãî áóäåòå åãî âûçûâàòü.
</li>
<li>Ñêîïèðóéòå ñîäåðæèìîå ïàïêè <b>img</b> â âàøó ïàïêó îáùèõ êàðòèíîê ñàéòà (îòíîñèòåëüíûé ïóòü
ê ýòîé ïàïêå íàäî áóäåò çàäàòü â ïåðåìåííîé <b>$imgpath</b>) êëàññà CAsBarDiagram.</li>
<li>Îòêðîéòå â òåêñòîâîì ðåäàêòîðå ôàéë as-diagrams.php è îòðåäàêòèðóéòå ñòðîêè :
<pre>
var $bt_total = 'Totals'; // localize here or include into separate file
var $imgpath = '/img/'; // place all 'diagram' images in this "folder"
</pre>
<br>$bt_total = ... - çäåñü çàäàåòñÿ çàãîëîâîê äëÿ ñòîëáöà Èòîãîâ (íàïðèìåð, "Èòîãî")
<br>$imgpath = ... - Âàø "âèðòóàëüíûé" ïóòü ê ïàïêå ñ êàðòèíêàìè
</li>
<li>Ïðè íåîáõîäèìîñòè ïðèâåñòè öâåòà è øðèôòû ê îáùåìó äèçàéíó, îòðåäàêòèðóéòå â ôàéëå as-diagrams.php
CSS-áëîê (ñòèëè tr.barodd, tr.bareven, tr.barhead, td.barhead)
</li>
</ol>
<br>
Åñëè Âàø WEB-ñåðâåð óæå ïîääåðæèâàåò PHP 4.x, ñêðèïò ãîòîâ ê ðàáîòå.
Òåïåðü ïîñìîòðèì, êàê åãî èñïîëüçîâàòü.
<br>
<H3>Èñïîëüçîâàíèå ìîäóëÿ â ñâîèõ ñêðèïòàõ</H3>
<p>
Âûâîäèòü äèàãðàììû ìîæíî êàê íà îñíîâå çàðàíåå ïîäãîòîâëåííîãî äâóìåðíîãî ìàññèâà äàííûõ,
(ïðåäâàðèòåëüíî âûçâàâ íåîáõîäèìûå SQL-çàïðîñû ê ñâîèì òàáëèöàì èëè äðóãèì ñïîñîáîì),
òàê è ïåðåäàâàÿ â êëàññ CAsBarDiagram òåêñò SQL çàïðîñîâ äëÿ òîãî, ÷òîáû äàííûå áûëè ñîáðàíû
ñèëàìè ñàìîãî êëàññà.
<ol>
<li>Íå çàáûâàåì ïîäêëþ÷èòü êëàññ ê ñâîåìó ñêðèïòó :<br>
<b>require_once('as-diagrams.php');</b>
</li>
<li>Îáúÿâëÿåì ïåðåìåííóþ êëàññà CAsBarDiagram è åñëè íóæíî, çàäàåì ðàáî÷èå ïàðàìåòðû:
<pre>
$graph = new CAsBarDiagram;
$graph->bwidth = 15; // øèðèíà îäíîãî "ñòîëáèêà" â ïèêñ.
$graph->showdigits = 0; // îòêëþ÷èòü âûâîä òàáëèöû ñ ÷èñëîâûìè çíà÷åíèÿìè (ïî óìîë÷. âêëþ÷åíî)
$graph->bt_total = 'Èòîãî'; // òåêñò äëÿ çàãîëîâêà èòîãîâîé êîëîíêè
$graph->precision = 0; // ñêîëüêî çíàêîâ ïîñëå äåñ.òî÷êè âûâîäèòü â òàáëèöå ÷èñëîâûõ çíà÷åíèé
$graph->showtotals = 0; // åñëè íå íóæíî âûâîäèòü êîëîíêó èòîãîâ
</pre>
</li>
<li><a name='LEGENDS'>Ãîòîâèì îäíî-äâóìåðíûå ìàññèâû çíà÷åíèé, êîòîðûå áóäóò âûïîëíÿòü ðîëü "ëåãåíäû" ïî îñè X ($legend_x)
è ïî îñè Y (èìåþòñÿ â âèäó çíà÷åíèÿ â îäíîé âûâîäèìîé ãðóïïå).
<br>Îäíîìåðíûé ìàññèâ-ëåãåíäà ñîäåðæèò "êëþ÷åâûå" çíà÷åíèÿ äëÿ ñîáèðàåìûõ äàííûõ,
à â äâóìåðíîì "êëþ÷" äîëæåí áûòü â ýëåìåíòå $legend_x[$row][0], à åãî òåêñòîâîå ïðåäñòàâëåíèå,
êîòîðîå äîëæíî âûâîäèòüñÿ íà ãðàôèêå - â $legend_x[$row][1].
<br>Çàìåòèì, ÷òî äâóìåðíûå ìàññèâû ëåãåíäû (êëþ÷,çíà÷åíèå) íóæíû ëèøü â ñëó÷àå,
åñëè âû ïëàíèðóåòå ñîáèðàòü äàííûå äëÿ âûâîäà ñ ïîìîùüþ âûçîâà GatherData().
<pre>
$legend_x = array('ðîçíè÷íûå ïðîäàæè','îïòîâûå ïðîäàæè', 'ïðîäàæè ÷åðåç èíòåðíåò');
$legend_y = array( array('01','ÿíâàðü'),array('02','ôåâðàëü'),array('03,','ìàðò'),
array('04','àïðåëü'),array('05','ìàé') );
</pre>
</li>
<li>Äàëåå ìîæíî ïîñòóïàòü äâóìÿ âàðèàíòàìè:
<br>1) ñîáèðàòü äàííûå ñàìîñòîÿòåëüíî, íàïîëíÿÿ ìàññèâ $data[x][y] ñâîèìè çíà÷åíèÿìè
è âûçûâàòü ìåòîä îòðèñîâêè ãðàôèêà, ïåðåäàâ åìó ñîáðàííûé ìàññèâ:
<pre>
$data = array( array(200,300,120), array(450,500,100), array(650,200,300),
array(380,200,90), array(750,340,200));
$graph->DiagramBar($legend_x, $legend_y, $data, 'Ðåçóëüòàòû ïðîäàæ');
</pre>
<br>
2) ïîäãîòîâèâ SQL-çàïðîñ, ïåðåäàòü åãî â îáúåêò êëàññà CAsBarDiagram:
<pre>
$graph->InitData($legend_x, $legend_y); // âíóòðåííèé ìàññèâ çàïîëíÿåòñÿ íóëÿìè
$graph->GatherData($sql_query, $legend_x, $legend_y);
// ... ìîæíî âûçâàòü ìíîãîêðàòíî, íàïîëíÿÿ ìàññèâ ïîñòåïåííî
$graph->DiagramBar($legend_x, $legend_y, 0, $data_title);
</pre>
Ïðè ðàáîòå ïî âòîðîìó ìåòîäó äàííûå, ïîëó÷åííûå â SQL-çàïðîñå, çàíîñÿòñÿ âî âíóòðåííèé ìàññèâ êëàññà,
è äëÿ èõ îòîáðàæåíèÿ âûçûâàåòñÿ ìåòîä DiagramBar() ñ ïóñòûì çíà÷åíèåì èëè ñêàëÿðíîé ïåðåìåííîé âìåñòî ìàññèâà
(3-èé ïàðàìåòð ìåòîäà).
</li>
</ol>
<h3>Ìåòîäû è ïåðåìåííûå êëàññà CAsBarDiagram</h3>
<p><b>InitData($legend_x, $legend_y)</b> - âûïîëíÿåò î÷èñòêó âíóòðåííåãî ìàññèâà íàêîïëåííûõ çíà÷åíèé
äëÿ âûâîäà. Íåîáõîäèìà, åñëè íóæíî ìíîãîêðàòíî âûâîäèòü äèàãðàììû, ïîëüçóÿñü ïðè ýòîì îäíèì è òåì æå
ýêçåìïëÿðîì êëàññà CAsBarDiagram. Ðàçìåðíîñòè ìàññèâà ñòàíîâèòñÿ ðàâíûìè äëèíàì ïåðåäàííûõ
ìàññèâîâ "ëåãåíä" $legend_x, $legend_y
<p><b>GatherData($sqltext, $legend_x, $legend_y [, $position_y])</b> - çàïîëíÿåò âíóòðåííèé ìàññèâ äàííûìè èç
ïåðåäàííîãî SQL-çàïðîñà. Ïðè íàëè÷èè íåîáõîäèìûõ òàáëèö ìîæíî ïîëó÷èòü âñå äàííûå
â îäíîì àãðåãèðóþùåì çàïðîñå.
Äëÿ ýòîãî ïåðâîå ïîëå ïîëó÷åííîãî êóðñîðà äîëæíî ñîîòâåòñòâîâàòü çíà÷åíèÿì â legend_x,
âòîðîå - $legend_y, à òðåòüå - áûòü èñêîìûì ÷èñëîâûì çíà÷åíèåì, çàíîñèìûì â ìàññèâ.
<br>Ïðèìåð àãðåãèðóþùåãî çàïðîñà (MySQL)
<pre>
SELECT MONTH(sale_date) AS mnt, product, SUM(sales_val) FROM sales
WHERE YEAR(sale_date)=2005 GROUP BY mnt,product
</pre>
Åñëè íóæíî ñ ïîìîùüþ çàïðîñà çàïîëíèòü òîëüêî îäèí "ñòîëáåö" ìàññèâà, (âîçâðàùàåìûé çàïðîñîì êóðñîð èìååò äâà ïîëÿ -
êëþ÷åâîå çíà÷åíèå ïî legend_x è èñêîìîå ÷èñëîâîå çíà÷åíèå), òî â ÷åòâåðòîì ïàðàìåòðå ($position_y)
íåîáõîäèìî óêàçàòü íîìåð çàïîëíÿåìîãî ñòîëáöà äàííûõ (íà÷èíàÿ ñ 0).
 ñëó÷àå, åñëè â êóðñîðå, âîçâðàùàåìîì çàïðîñîì, òðè è áîëåå ïîëÿ, ïàðàìåòð $position_y èãíîðèðóåòñÿ.
<p><b>DiagramBar($legend_x, $legend_y, [$data|0, [$data_title]])</b> -
îòîáðàæåíèå äèàãðàììû. Åñëè â òðåòüåì ïàðàìåòðå ïåðåäàí ìàññèâ, åãî çíà÷åíèÿ èñïîëüçóþòñÿ äëÿ
îòîáðàæåíèÿ. Åñëè ïåðåäàíî ëþáîå ñêàëÿðíîå çíà÷åíèå, èñïîëüçóþòñÿ äàííûå, íàêîïëåííûå
ñ ïîìîùüþ ïðåäûäóùèõ âûçîâîâ ìåòîäà GatherData();
<br><b>$data</b> - äâóìåðíûé ìàññèâ äàííûõ. $data[x][y] - çíà÷åíèå "ñòîëáèêà ¹ "y"
âíóòðè âûâîäèìîé êîëîíêè X.
<a name='SHOWDIGITS' />
<p><b>$showdigits</b> - âêëþ÷åíèå/îòêëþ÷åíèå âûâîäà "öèôðîâîé" ÷àñòè äèàãðàììû
(òàáëèöû ñ ÷èñëîâûì ïðåäñòàâëåíèåì äàííûõ, èñïîëüçîâàííûõ äëÿ îòðèñîâêè ñòîëáèêîâ)
<a name='SHOWPERCENTS' />
<p><b>$ShowPercents</b> - Íàçíà÷èâ ëþáîå íåïóñòîå çíà÷åíèå ýëåìåíòàì ýòîãî ìàññèâà, âû âêëþ÷èòå
ôîðìèðîâàíèå ñòðîê "ïðîöåíòíîãî îòíîøåíèÿ". Ýòè ñòðîêè áóäóò ñîäåðæàòü îòíîøåíèå çíà÷åíèé
â ñòðîêå N-1 ê ñòðîêå N, óìíîæåííîå íà 100.
<br>
 ýòîé ñòðîêå (âûâîäèìîé â "öèôðîâîé" ÷àñòè) áóäóò âûâåäåíû îòíîøåíèÿ çíà÷åíèé ÿ÷ååê,
âûðàæåííûå â ïðîöåíòàõ - $data[n-1]/$data[n]. Ýòà ôóíêöèÿ áûëà ââåäåíà, êîãäà
ïîíàäîáèëîñü îòîáðàæàòü ïðîöåíò âûïîëíåíèÿ ïëàíà, è ïðè ýòîì îäíà ñòðîêà äàííûõ ñîäåðæèò
çíà÷åíèÿ ôàêòè÷åñêèõ ïîêàçàòåëåé, à ñëåäóþùàÿ - ñîîòâåòñòâóþùèå ïëàíîâûå äàííûå.
Êàê èñïîëüçîâàòü :<br>
Äîïóñòèì, åñòü ñòðîêà äàííûõ "ôàêòà", èìåþùàÿ çàãîëîâîê "Ôàêò 2005" â ñîîòâåòñòâóþùåé ñòðîêå çàãîëîâêîâ $legend_y,
è ñòðîêà ñ ïëàíîì, (çàãîëîâîê â $legend_y - "Ïëàí 2005").
×òîáû â öèôðîâîé îáëàñòè ïîñëå ñòðîêè ïëàíà áûëè âûâåäåíû ïîêàçàòåëè âûïîëíåíèÿ â ïðîöåíòàõ,
ïåðåä âûçîâîì ìåòîäà DiagramBar() ñäåëàåì ïðèñâîåíèå:
<pre>
$graph->ShowPercents['Ïëàí 2005'] = '2005/Âûïîëíåíî, %';
</pre>
Åñëè ïðèñâîåííàÿ ñòðîêà ñîñòîèò èç îäíîãî ñèìâîëà (1 èëè '*'), çàãîëîâîê äëÿ
ñòðîêè ïðîöåíòîâ ôîðìèðóåòñÿ èç çàãîëîâêîâ ñîîòâåòñòâóþùèõ ñòðîê äàííûõ,
â ïðîòèâíîì ñëó÷àå åå ñîäåðæèìîå è áóäåò èñïîëüçîâàíî â êà÷åñòâå çàãîëîâêà
(êàê â íàøåì ïðèìåðå)
<br> Ïðèìåð:
<pre>
$graph->ShowPercents[Ïëàí 2004'] = 'Âûïîëíåíèå ïëàíà 2004';
$graph->ShowPercents[Ïëàí 2005'] = 'Âûïîëíåíèå ïëàíà 2005';
// Áóäóò âûâåäåíû äâå ñòðîêè ñ ïðîöåíòíûìè ïîêàçàòåëÿìè!
$graph->DiagramBar($legend_x, $legend_y, 0, $data_title);
</pre>
Åñëè ìàññèâ ShowPercents íåïóñòîé ê ìîåíòó âûçîâà DiagramBar(),
öèôðîâàÿ îáëàñòü áóäåò âûâåäåíà íåçàâèñèìî îò çíà÷åíèÿ ïåðåìåííîé showdigits.
Åñëè ïåðåìåííîé $graph->ShowPercents çàäàíî íåïóñòîå çíà÷åíèå,
"öèôðîâàÿ" ÷àñòü äèàãðàììû áóäåò âûâîäèòüñÿ íåçàâèñèìî îò çíà÷åíèÿ â ïåðåìåííîé $graph->showdigits.
<a name="drawempty">
<p><b>$drawempty_x, $drawempty_y</b> - ïåðåìåííûå çàäàþò ðåæèì îòðèñîâêè "ïóñòûõ" êîëîíîê (ñ íóëåâûìè çíà÷åíèÿìè)
è ñòðîê (â öèôðîâîé ÷àñòè) ñîîòâåòñòâåííî.
Ïî óìîë÷àíèþ ðàâíû 1, ò.å. îòîáðàæàþòñÿ âñå êîëîíêè, äàæå ñ îäíèìè íóëåâûìè çíà÷åíèÿìè, è âñå ñòðîêè.
Ïåðåìåííûå íóæíî óñòàíîâèòü äî âûçîâà DiagramBar(). Äëÿ óñòàíîâêè ðåæèìà "ñêðûâàòü ïóñòûå êîëîíêè,ñòðîêè"
ìîæíî âîñïîëüçîâàòüñÿ ìåòîäàìè HideEmptyXY($Hide=1),HideEmptyX($Hide=1),HideEmptyY($Hide=1)
<pre>
$grarh->drawempty_y = 0;
$graph->HideEmptyY(); // îáà îïåðàòîðà èìåþò îäèíàêîâûé ýôôåêò
</pre>
<p>Ñëåäóþùèå òðè ïåðåìåííûå êëàññà ñëóæàò äëÿ ïðåâðàùåíèÿ çàãîëîâêîâ "ëåãåíäû" â HTML-ññûëêè.</p>
<ul>
<li><b>legendx_url</b> - çäåñü çàäàåòñÿ îñíîâíàÿ ñòðîêà URL, ñ ìàêðîñîì "{ID}", êîòîðûé äëÿ êàæäîãî çàëîãîâêà
çàìåíÿåòñÿ íà ñîîòâåòñòâóþùåå çíà÷åíèå.
<pre>
$grarh = new CAsBarDiagram;
$graph->legendx_url = 'detailedinfo.php?info_id={ID}';
</pre>
Ïîñëå çàäàíèÿ ýòîé ïåðåìåííîé âñå íàèìåíîâàíèÿ ñòîëáöîâ â âûâåäåííîé äèàãðàììå áóäóò <A HREF>-ññûëêàìè
</li>
<li><b>legendx_onClick</b> - ñòðîêà äëÿ ñîáûòèÿ onClick=... â ññûëêå. Èñïîëüçóåòñÿ, åñëè âìåñòî ïåðåõîäà
ïî ññûëêå íóæíî âûïîëíèòü javascript-ôóíêöèþ. Íàïðèìåð, äëÿ îòêðûòèÿ popup-îêíà (ïðè "êëèêå"
ïî òåêñòó çàãîëîâêà) ìîæíî çàäàòü ñòðîêó âèäà:
<pre>
$graph->legendx_onClick = "window.open('details.php?id={ID}', '_blank','height=300,width=400');";
</pre>
</li>
<li><b>legendx_id</b> - çíà÷åíèÿ äëÿ ïîäñòàíîâêè âìåñòî "{ID}" â àäðåñàõ è çíà÷åíèÿõ onClick.
Åñëè ïåðåìåííàÿ íå ñîäåðæèò ìàññèâà, áóäóò èñïîëüçîâàíû ñàìè ñòðîêè çàãîëîâêîâ ñòîëáöîâ.
<br> ñëó÷àå ïîäãîòîâëåííûõ <b>äâóìåðíûõ</b> ìàññèâîâ ëåãåíä íóæäà â legendx_id îòïàäàåò.
</li>
</ul>
<br>
Íèæå ïðèâîäèòñÿ ðàáîòàþùèé ïðèìåð.
<pre>
require_once('as-diagrams.php'); // âêëþ÷èòü â òåëî ñâîåãî ñêðèïòà !
//...
$data_title = 'Test bar diagram'; // title for the diagram
// sample data array
$data = array();
$data[] = array(900, 1300,1600);
$data[] = array(1200,1800,2500);
$data[] = array(1400,2000,2800);
$data[] = array(1900,2900,3900);
$data[] = array(2500,3500,4500);
$legend_x = array('Yanuary','February','March','April','May');
$legend_y = array('pens','pensils','staplers');
$graph = new CAsBarDiagram;
$graph->bwidth = 10; // set one bar width, pixels
$graph->bt_total = 'Summary'; // 'totals' column title, if other than 'Totals'
// $graph->showtotals = 0; // uncomment it if You don't need 'totals' column
$graph->precision = 0; // decimal precision
// call drawing function
$graph->DiagramBar($legend_x, $legend_y, $data, $data_title);
</pre>
<br>
Ðåçóëüòàò ðàáîòû ìîæåò âûãëÿäåòü ñëåäóþùèì îáðàçîì:
<br><br><div align=center>
<img src="sample.png" border=1 bgcolor=blue>
</div>
<br><br><!-- sample output ens -->
Äîïîëíèòåëüíûå çàìå÷àíèÿ ïî ðàáîòå ñ ìîäóëåì as-diagrams:
<ul>
<li>Îòîáðàæàåìûå äàííûå ìîãóò èìåòü îòðèöàòåëüíûå çíà÷åíèÿ, â ýòîì ñëó÷àå
ãðàôèê áóäåò èìåòü âòîðóþ, "ìèíóñîâóþ" ÷àñòü. Ìàñøòàáû ïî îáåèì ÷àñòÿì âûáèðàþòñÿ
àâòîìàòè÷åñêè.<br><br></li>
<li>×òîáû óïðàâëÿòü øèðèíîé îäíîãî ñòîëáèêà äèàãðàììû, çàäàéòå ñâîå çíà÷åíèå (â ïèêñåëàõ)
â ïåðåìåííîé <b>$bwidth</b> äî âûçîâà ôóíêöèè DiagramBar();
<li>Åñëè ÷èñëî ñòðîê â ïîäãîòîâëåííîì ìàññèâå äàííûõ âåëèêî è ïðèâîäèò
ê îòðèñîâêå ñëèøêîì øèðîêîé ñòðàíèöû, øèðèíà ñòîëáèêà ìîæåò áûòü àâòîìàòè÷åñêè
ïîíèæåíà. Ìàêñèìàëüíîé äîïóñòèìîé øèðèíîé îêíà ïðè ýòîì
ñ÷èòàåòñÿ 1024 ïèêñåëà (ñòàíäàðòíîå ðàçðåøåíèå ìîíèòîðà 1024 x 768).
Åñëè Âû õîòèòå çàáëîêèðîâàòü ýòó ôóíêöèþ "ïîäñòðîéêè", íàéäèòå è çàêîììåíòèðóéòå ñòðîêó
â ìîäóëå <b>as-diagrams.php</b>, èìåþùóþ âèä :
<pre>
"var $autoshrink = 1024;"
</pre>
Ëèáî çàäàéòå çäåñü ñâîå çíà÷åíèå ìàêñèìàëüíîé øèðèíû "ýêðàíà".
<br></li>
<li>Êàê Âû çàìåòèëè, îñü Y âñåãäà èìååò 4 "äåëåíèÿ" (â îäíó ñòîðîíó îò íóëÿ). Êàæäûé "øàã"
èìååò âûñîòó 60 ïèêñåëîâ (òàêèì îáðàçîì, îáùàÿ âûñîòà Y-ïîëóîñè ãðàôèêà ðàâíà 240 px).
Ôàéë "<b>bar-bg240.png</b>" èñïîëüçóåòñÿ êàê ôîíîâûé äëÿ îñíîâíîé çîíû ãðàôèêîâ.
Åñëè ïîíàäîáèòñÿ ñìåíèòü ôîí, ïðîñòî îòðåäàêòèðóéòå ýòîò ôàéë.
Åñëè æå íóæíî èçìåíèòü "áàçîâóþ" âûñîòó (240px), ïðèäåòñÿ âûïîëíèòü áîëüøå äåéñòâèé:
íàðèñîâàòü íîâûé ôàéë ôîíà, ñîõðàíèòü åãî ïîä èìåíåì <b>bar-bgNNNN.png</b>
(âûñîòà êàðòèíêè äîëæíà áûòü 1/4 îò æåëàåìîé íîâîé ïîëíîé âûñîòû),
è çàäàòü íîâîå çíà÷åíèå âûñîòû â ïåðåìåííîé <b>$graf_height</b> äî âûçîâà DiagramBar():
<br><b>$graf_height = NNNN;</b>
<br> ãäå NNNN - íîâàÿ âûñîòà äëÿ ïîëó-îñè Y.
<br>Ïîìíèòå, ÷òî åñëè äàííûå ñîäåðæàò è ïîëîæèòåëüíûå, è îòðèöàòåëüíûå çíà÷åíèÿ,
ãðàôèê ìîæåò áûòü âûøå â äâà ðàçà.
<br></li>
<li>Ïî óìîë÷àíèþ "ñòîëáèêè" ðàñêðàøåíû "ðàñòÿíóòûìè" èçîáðàæåíèÿìè bar-xxxxx.png.
Åñëè íóæíî ðàñïîëîæèòü êàðòèíêó ôîíà "ïëèòêîé", çàäàéòå íåïóñòîå çíà÷åíèå â ïåðåìåííîé
<b>$btilemode</b> äî âûçîâà DiagramBar():
<b>$btilemode=1;</b>
<br>Âåðîÿòíî, äëÿ ýòîãî ñëó÷àÿ Âàì ïîíàäîáÿòñÿ ñâîè èçîáðàæåíèÿ âìåñòî âêëþ÷åííûõ â äèñòðèáóòèâ.
</li>
<li>Åñëè Âû ïëàíèðóåòå âûâîäèòü äèàãðàììû äëÿ çíà÷åíèé ìåíåå 1, òî÷íîñòü ïðåäñòàâëåíèÿ
äðîáíîé ÷àñòè èìååò çíà÷åíèå.  ýòîì ñëó÷àå ìîæíî çàäàòü ÷èñëî äåñ.çíàêîâ â ïåðåìåííîé
<b>$precision</b> äî âûçîâà ôóíêöèè DiagramBar():
<br><b>$gtaph->precision = 4;</b>
<br>Çíà÷åíèå ïî óìîë÷àíèþ 2.
</ul>
<br>
<H4>Èñòîðèÿ (âåðñèè)</H4>
<h5>1.0.11 (16.01.2007)</h5>
<ul>
<li>Íîâàÿ ôè÷à: ìàññèâ "ëåãåíä" ïî îñÿì X ($legend_x[]) è Y ($legend_y[]) ìîæåò áûòü äâóìåðíûì -
òîãäà ïåðâûé ýëåìåíò â ñòðîêå (legend_x[ii][0]) äîëæåí ñîäåðæàòü "êëþ÷åâîå"
çíà÷åíèå àòðèáóòà, à âòîðîé (legend_x[ii][1]) - åãî òåêñòîâîå ïðåäñòàâëåíèå,
âûâîäèìîå íà äèàãðàììå. Ïîäðîáíî - ñì. <a href="#LEGENDS">âûøå</a>.
Ïðè äâóìåðíûõ ìàññèâàõ ëåãåíä îòïàäàåò íåîáõîäèìîñòü â äîïîëíèòåëüíûõ ìàññèâàõ ID-çíà÷åíèé
legendx_id, legendy_id.
</li>
<li>
 êëàññ äîáàâëåíà íîâûå ïåðåìåííûå $drawempty_x, $drawempty_y, è ñîîòâåòñòâåííî, ôóíêöèè äëÿ èõ çàäàíèÿ
CAsBarDiagram::HideEmptyXY(param=1),HideEmptyX(param=1), HideEmptyY(param=1),
çàäàþùèå ðåæèì âûâîäà ëèáî ïîäàâëåíèÿ ïóñòûõ êîëîíîê/ñòðîê (ïðè íåíóëåâîì çíà÷åíèè
ïóñòûå êîëîíêè íå ïîäàâëÿþòñÿ).
Ïî óìîë÷àíèþ ïóñòûå êîëîíêè íå ïîäàâëÿþòñÿ. Åñëè íóæíî îáðàòíîå, äî âûçîâà DiagramBar()
âûïîëíèòü íóæíûé ìåòîä;
</li>
</ul>
<h5>1.0.10 (17.01.2006)</h5>
<ul>
<li>Äîáàâëåíà âîçìîæíîñòü âûâîäà èòîãîâ ïî ñòîëáöàì (â îáëàñòè ÷èñëîâîãî ïðåäñòàâëåíèÿ äàííûõ)
Äëÿ ýòîãî ïåðåìåííàÿ <b>showtotals</b> òåïåðü èìååò "ïîáèòîâîå" çíà÷åíèå: áèò 0 îòâå÷àåò çà èòîãè ñïðàâà,
áèò 1 - çà èòîãè ñíèçó</li>
<li>âîçìîæíîñòü âûâîäà íåñêîëüêèõ ñòðîê "ïðîöåíòíîãî îòíîøåíèÿ"
(â îáëàñòè ÷èñëîâîãî ïðåäñòàâëåíèÿ äàííûõ)
</li>
<!-- <li></li> -->
</ul>
<br>
<H4>Ññûëêè</H4>
<ul>
<li><a href="http://as-works.narod.ru/php/">Äîìàøíÿÿ ñòðàíèöà àâòîðà, áèáëèîòåêà PHP-ìîäóëåé</a></li>
<li><a href="http://www.lutanho.net/diagram/" target="_blank">LT Diagram Builder</a> -
îòëè÷íûé äâèæîê äëÿ ïîñòðîåíèÿ ðàçëè÷íûõ âèäîâ äèàãðàìì è âûâîäà ãðàôèêîâ ôóíêöèé
Åñòü âåðñèè javascript, PHP è ASP. PHP âåðñèÿ èñïîëüçóåò áèáëèîòåêó GD.
</li>
<li><a href="http://w100w.com/english/asp/graphs_and_charts/" target="_blank">w100w.com,
ñïèñîê ðàçðàáîòîê äëÿ âûâîäà ãðàôèêè</a>
</li>
</ul>
<br><br><br><p>
<hr>
<div align=center><font size=-2>Copyright © Alexander Selifonov, <a href="http://as-works.narod.ru">as-works.narod.ru</a>
</font></div>
</HTML></BODY>
|