|
|
2 |
<font color="#0000BB"><?php<br /></font><font color="#FF8000">//<br />// Example of CSIM frequence bar that uses the cache<br />//<br /></font><font color="#007700">include_once (</font><font color="#DD0000">"../jpgraph.php"</font><font color="#007700">);<br />include_once (</font><font color="#DD0000">"../jpgraph_bar.php"</font><font color="#007700">);<br />include_once (</font><font color="#DD0000">"../jpgraph_line.php"</font><font color="#007700">);<br /><br /><br /></font><font color="#FF8000">// Utility function to calculate the accumulated frequence<br />// for a set of values and ocurrences<br /></font><font color="#007700">function </font><font color="#0000BB">accfreq</font><font color="#007700">(</font><font color="#0000BB">$data</font><font color="#007700">) {<br /> </font><font color="#0000BB">rsort</font><font color="#007700">(</font><font color="#0000BB">$data</font><font color="#007700">);<br /> </font><font color="#0000BB">$s </font><font color="#007700">= </font><font color="#0000BB">array_sum</font><font color="#007700">(</font><font color="#0000BB">$data</font><font color="#007700">);<br /> </font><font color="#0000BB">$as </font><font color="#007700">= array(</font><font color="#0000BB">$data</font><font color="#007700">[</font><font color="#0000BB">0</font><font color="#007700">]);<br /> </font><font color="#0000BB">$asp </font><font color="#007700">= array(</font><font color="#0000BB">100</font><font color="#007700">*</font><font color="#0000BB">$as</font><font color="#007700">[</font><font color="#0000BB">0</font><font color="#007700">]/</font><font color="#0000BB">$s</font><font color="#007700">);<br /> </font><font color="#0000BB">$n </font><font color="#007700">= </font><font color="#0000BB">count</font><font color="#007700">(</font><font color="#0000BB">$data</font><font color="#007700">);<br /> for( </font><font color="#0000BB">$i</font><font color="#007700">=</font><font color="#0000BB">1</font><font color="#007700">; </font><font color="#0000BB">$i </font><font color="#007700">< </font><font color="#0000BB">$n</font><font color="#007700">; ++</font><font color="#0000BB">$i </font><font color="#007700">) {<br /> </font><font color="#0000BB">$as</font><font color="#007700">[</font><font color="#0000BB">$i</font><font color="#007700">] = </font><font color="#0000BB">$as</font><font color="#007700">[</font><font color="#0000BB">$i</font><font color="#007700">-</font><font color="#0000BB">1</font><font color="#007700">]+</font><font color="#0000BB">$data</font><font color="#007700">[</font><font color="#0000BB">$i</font><font color="#007700">];<br /> </font><font color="#0000BB">$asp</font><font color="#007700">[</font><font color="#0000BB">$i</font><font color="#007700">] = </font><font color="#0000BB">100.0</font><font color="#007700">*</font><font color="#0000BB">$as</font><font color="#007700">[</font><font color="#0000BB">$i</font><font color="#007700">]/</font><font color="#0000BB">$s</font><font color="#007700">;<br /> }<br /> return </font><font color="#0000BB">$asp</font><font color="#007700">;<br />}<br /><br /></font><font color="#FF8000">// some data<br /></font><font color="#0000BB">$data_freq </font><font color="#007700">= array(</font><font color="#0000BB">22</font><font color="#007700">,</font><font color="#0000BB">20</font><font color="#007700">,</font><font color="#0000BB">12</font><font color="#007700">,</font><font color="#0000BB">10</font><font color="#007700">,</font><font color="#0000BB">5</font><font color="#007700">,</font><font color="#0000BB">4</font><font color="#007700">,</font><font color="#0000BB">2</font><font color="#007700">);<br /></font><font color="#0000BB">$data_accfreq </font><font color="#007700">= </font><font color="#0000BB">accfreq</font><font color="#007700">(</font><font color="#0000BB">$data_freq</font><font color="#007700">);<br /><br /></font><font color="#FF8000">// Create the graph. <br /></font><font color="#0000BB">$graph </font><font color="#007700">= new </font><font color="#0000BB">Graph</font><font color="#007700">(</font><font color="#0000BB">350</font><font color="#007700">,</font><font color="#0000BB">250</font><font color="#007700">);<br /><br /></font><font color="#FF8000">// We need to make this extra call for CSIM scripts<br />// that make use of the cache. If the cache contains this<br />// graph the HTML wrapper will be returned and then the<br />// method will call exit() and hence NO LINES AFTER THIS <br />// CALL WILL BE EXECUTED.<br />// $graph->CheckCSIMCache('auto');<br /><br />// Setup some basic graph parameters<br /></font><font color="#0000BB">$graph</font><font color="#007700">-></font><font color="#0000BB">SetScale</font><font color="#007700">(</font><font color="#DD0000">"textlin"</font><font color="#007700">);<br /></font><font color="#0000BB">$graph</font><font color="#007700">-></font><font color="#0000BB">SetY2Scale</font><font color="#007700">(</font><font color="#DD0000">'lin'</font><font color="#007700">,</font><font color="#0000BB">0</font><font color="#007700">,</font><font color="#0000BB">100</font><font color="#007700">);<br /></font><font color="#0000BB">$graph</font><font color="#007700">-></font><font color="#0000BB">img</font><font color="#007700">-></font><font color="#0000BB">SetMargin</font><font color="#007700">(</font><font color="#0000BB">50</font><font color="#007700">,</font><font color="#0000BB">70</font><font color="#007700">,</font><font color="#0000BB">30</font><font color="#007700">,</font><font color="#0000BB">40</font><font color="#007700">);<br /></font><font color="#0000BB">$graph</font><font color="#007700">-></font><font color="#0000BB">yaxis</font><font color="#007700">-></font><font color="#0000BB">SetTitleMargin</font><font color="#007700">(</font><font color="#0000BB">30</font><font color="#007700">);<br /></font><font color="#0000BB">$graph</font><font color="#007700">-></font><font color="#0000BB">SetMarginColor</font><font color="#007700">(</font><font color="#DD0000">'#EEEEEE'</font><font color="#007700">);<br /><br /></font><font color="#FF8000">// Setup titles and fonts<br /></font><font color="#0000BB">$graph</font><font color="#007700">-></font><font color="#0000BB">title</font><font color="#007700">-></font><font color="#0000BB">Set</font><font color="#007700">(</font><font color="#DD0000">"Frequence plot"</font><font color="#007700">);<br /></font><font color="#0000BB">$graph</font><font color="#007700">-></font><font color="#0000BB">xaxis</font><font color="#007700">-></font><font color="#0000BB">title</font><font color="#007700">-></font><font color="#0000BB">Set</font><font color="#007700">(</font><font color="#DD0000">"X-title"</font><font color="#007700">);<br /></font><font color="#0000BB">$graph</font><font color="#007700">-></font><font color="#0000BB">yaxis</font><font color="#007700">-></font><font color="#0000BB">title</font><font color="#007700">-></font><font color="#0000BB">Set</font><font color="#007700">(</font><font color="#DD0000">"Y-title"</font><font color="#007700">);<br /><br /></font><font color="#0000BB">$graph</font><font color="#007700">-></font><font color="#0000BB">title</font><font color="#007700">-></font><font color="#0000BB">SetFont</font><font color="#007700">(</font><font color="#0000BB">FF_FONT1</font><font color="#007700">,</font><font color="#0000BB">FS_BOLD</font><font color="#007700">);<br /></font><font color="#0000BB">$graph</font><font color="#007700">-></font><font color="#0000BB">yaxis</font><font color="#007700">-></font><font color="#0000BB">title</font><font color="#007700">-></font><font color="#0000BB">SetFont</font><font color="#007700">(</font><font color="#0000BB">FF_FONT1</font><font color="#007700">,</font><font color="#0000BB">FS_BOLD</font><font color="#007700">);<br /></font><font color="#0000BB">$graph</font><font color="#007700">-></font><font color="#0000BB">xaxis</font><font color="#007700">-></font><font color="#0000BB">title</font><font color="#007700">-></font><font color="#0000BB">SetFont</font><font color="#007700">(</font><font color="#0000BB">FF_FONT1</font><font color="#007700">,</font><font color="#0000BB">FS_BOLD</font><font color="#007700">);<br /><br /></font><font color="#FF8000">// Turn the tickmarks<br /></font><font color="#0000BB">$graph</font><font color="#007700">-></font><font color="#0000BB">xaxis</font><font color="#007700">-></font><font color="#0000BB">SetTickSide</font><font color="#007700">(</font><font color="#0000BB">SIDE_DOWN</font><font color="#007700">);<br /></font><font color="#0000BB">$graph</font><font color="#007700">-></font><font color="#0000BB">yaxis</font><font color="#007700">-></font><font color="#0000BB">SetTickSide</font><font color="#007700">(</font><font color="#0000BB">SIDE_LEFT</font><font color="#007700">);<br /><br /></font><font color="#0000BB">$graph</font><font color="#007700">-></font><font color="#0000BB">y2axis</font><font color="#007700">-></font><font color="#0000BB">SetTickSide</font><font color="#007700">(</font><font color="#0000BB">SIDE_RIGHT</font><font color="#007700">);<br /></font><font color="#0000BB">$graph</font><font color="#007700">-></font><font color="#0000BB">y2axis</font><font color="#007700">-></font><font color="#0000BB">SetColor</font><font color="#007700">(</font><font color="#DD0000">'black'</font><font color="#007700">,</font><font color="#DD0000">'blue'</font><font color="#007700">);<br /></font><font color="#0000BB">$graph</font><font color="#007700">-></font><font color="#0000BB">y2axis</font><font color="#007700">-></font><font color="#0000BB">SetLabelFormat</font><font color="#007700">(</font><font color="#DD0000">'%3d.0%%'</font><font color="#007700">);<br /><br /></font><font color="#FF8000">// Create a bar pot<br /></font><font color="#0000BB">$bplot </font><font color="#007700">= new </font><font color="#0000BB">BarPlot</font><font color="#007700">(</font><font color="#0000BB">$data_freq</font><font color="#007700">);<br /><br /></font><font color="#FF8000">// Create targets and alt texts for the image maps. One for each bar<br />// (In this example this is just "dummy" targets)<br /></font><font color="#0000BB">$targ</font><font color="#007700">=array(</font><font color="#DD0000">"#1"</font><font color="#007700">,</font><font color="#DD0000">"#2"</font><font color="#007700">,</font><font color="#DD0000">"#3"</font><font color="#007700">,</font><font color="#DD0000">"#4"</font><font color="#007700">,</font><font color="#DD0000">"#5"</font><font color="#007700">,</font><font color="#DD0000">"#6"</font><font color="#007700">,</font><font color="#DD0000">"#7"</font><font color="#007700">);<br /></font><font color="#0000BB">$alts</font><font color="#007700">=array(</font><font color="#DD0000">"val=%d"</font><font color="#007700">,</font><font color="#DD0000">"val=%d"</font><font color="#007700">,</font><font color="#DD0000">"val=%d"</font><font color="#007700">,</font><font color="#DD0000">"val=%d"</font><font color="#007700">,</font><font color="#DD0000">"val=%d"</font><font color="#007700">,</font><font color="#DD0000">"val=%d"</font><font color="#007700">,</font><font color="#DD0000">"val=%d"</font><font color="#007700">);<br /></font><font color="#0000BB">$bplot</font><font color="#007700">-></font><font color="#0000BB">SetCSIMTargets</font><font color="#007700">(</font><font color="#0000BB">$targ</font><font color="#007700">,</font><font color="#0000BB">$alts</font><font color="#007700">);<br /><br /><br /></font><font color="#FF8000">// Create accumulative graph<br /></font><font color="#0000BB">$lplot </font><font color="#007700">= new </font><font color="#0000BB">LinePlot</font><font color="#007700">(</font><font color="#0000BB">$data_accfreq</font><font color="#007700">);<br /><br /></font><font color="#FF8000">// We want the line plot data point in the middle of the bars<br /></font><font color="#0000BB">$lplot</font><font color="#007700">-></font><font color="#0000BB">SetBarCenter</font><font color="#007700">();<br /><br /></font><font color="#FF8000">// Use transperancy<br /></font><font color="#0000BB">$lplot</font><font color="#007700">-></font><font color="#0000BB">SetFillColor</font><font color="#007700">(</font><font color="#DD0000">'lightblue@0.6'</font><font color="#007700">);<br /></font><font color="#0000BB">$lplot</font><font color="#007700">-></font><font color="#0000BB">SetColor</font><font color="#007700">(</font><font color="#DD0000">'blue@0.6'</font><font color="#007700">);<br /></font><font color="#FF8000">//$lplot->SetColor('blue');<br /></font><font color="#0000BB">$graph</font><font color="#007700">-></font><font color="#0000BB">AddY2</font><font color="#007700">(</font><font color="#0000BB">$lplot</font><font color="#007700">);<br /><br /><br /></font><font color="#FF8000">// Setup the bars<br /></font><font color="#0000BB">$bplot</font><font color="#007700">-></font><font color="#0000BB">SetFillColor</font><font color="#007700">(</font><font color="#DD0000">"orange@0.2"</font><font color="#007700">);<br /></font><font color="#0000BB">$bplot</font><font color="#007700">-></font><font color="#0000BB">SetValuePos</font><font color="#007700">(</font><font color="#DD0000">'center'</font><font color="#007700">);<br /></font><font color="#0000BB">$bplot</font><font color="#007700">-></font><font color="#0000BB">value</font><font color="#007700">-></font><font color="#0000BB">SetFormat</font><font color="#007700">(</font><font color="#DD0000">"%d"</font><font color="#007700">);<br /></font><font color="#0000BB">$bplot</font><font color="#007700">-></font><font color="#0000BB">value</font><font color="#007700">-></font><font color="#0000BB">SetFont</font><font color="#007700">(</font><font color="#0000BB">FF_ARIAL</font><font color="#007700">,</font><font color="#0000BB">FS_NORMAL</font><font color="#007700">,</font><font color="#0000BB">9</font><font color="#007700">);<br /></font><font color="#0000BB">$bplot</font><font color="#007700">-></font><font color="#0000BB">value</font><font color="#007700">-></font><font color="#0000BB">Show</font><font color="#007700">();<br /><br /></font><font color="#FF8000">// Add it to the graph<br /></font><font color="#0000BB">$graph</font><font color="#007700">-></font><font color="#0000BB">Add</font><font color="#007700">(</font><font color="#0000BB">$bplot</font><font color="#007700">);<br /><br /></font><font color="#FF8000">// Send back the HTML page which will call this script again<br />// to retrieve the image.<br /></font><font color="#0000BB">$graph</font><font color="#007700">-></font><font color="#0000BB">StrokeCSIM</font><font color="#007700">(</font><font color="#DD0000">'barlinefreq_csimex1.php'</font><font color="#007700">);<br /><br /></font><font color="#0000BB">?><br /></font>
|