用 JavaScript 创建图形图表的前景令人兴奋。这也是对 JavaScript 的完美使用——使用不显眼的脚本创建非必要的功能。我创建了 PHP(Analytics 类)、HTML 和 MooTools JavaScript 的组合,它们将连接到 Google Analytics,创建一个包含给定月份统计数据的 HTML 表格,并使用 MooTools MilkChart 将它们绘制成彩色图表。
PHP
/* defaults */ $month = date('n'); $year = date('Y'); $type = 'Column'; /* submission? */ if($_GET['month'] || $_GET['year']): /* cleanse lookups */ $month = (int) $_GET['month']; if(!$month) { $month = 1; } $year = (int) $_GET['year']; if(!$year) { $year = date('Y'); } /* retrieve information from google analytics */ require 'ga/analytics.class.php'; $analytics = new analytics('youraccount@gmail.com', 'yourP@ss'); $analytics->setProfileByName('yourdomain.com'); $analytics->setMonth($month,$year); $visits = $analytics->getVisitors(); $views = $analytics->getPageviews(); /* build tables */ if(count($visits)) { //visits - php $visits_table_data = '<table id="data-table-visits">'; /* $visits_table_data.= '<thead><tr><th>Unique Visits</th><th>PageViews</th></tr></head><tbody>'; */ $visits_table_data.= '<thead><tr><th>Unique Visits</th></tr></head><tbody>'; foreach($visits as $day=>$visit) { /* $visits_table_data.= '<tr><td>'.$visit.'</td><td>'.$views[$day].'</td></tr>'."\n"; $visits_table_foot.= '<td>'.$day.'</td><td>'.$day.'</td>'."\n"; */ $visits_table_data.= '<tr><td>'.$visit.'</td></tr>'."\n"; $visits_table_foot.= '<td>'.$day.'</td>'."\n"; } $visits_table_data.= '</tbody>'; $visits_table_data.= '<tfoot><tr>'.$visits_table_foot.'</tr></tfoot>'; $visits_table_data.= '</table>'; } endif;
这一切都始于从 Google Analytics 获取信息。只需提供您想要统计的时间范围。我通常选择按月检索统计信息。
生成的 HTML 和 MooTools JavaScript
<h2>Select Your Month/Year</h2> <form method="get"> <select name="month" id="month"> <option value="">-- Select Month --</option> <?php for($x = 1; $x <= 12; $x++): echo '<option value="',$x,'"',($month == $x ? ' selected="selected"' : ''),'>',date('F',mktime(0,0,0,$x,1,2009)),'</option>'; endfor; ?> </select> <select name="year" id="year"> <option value="">-- Select Year --</option> <?php for($x = 2008; $x <= date('Y'); $x++): echo '<option value="',$x,'"',($year == $x ? ' selected="selected"' : ''),'>',$x,'</option>'; endfor; ?> </select> <select name="type" id="type"> <option value="">-- Select Chart Type --</option> <?php $chart_types = array('Column','Bar','Line','Scatter','Pie'); foreach($chart_types as $chart_type): echo '<option value="',$chart_type,'"',($type == $chart_type ? ' selected="selected"' : ''),'>',$chart_type,'</option>'; endforeach; ?> </select> <input type="submit" name="submit" id="submit" value="Get Statistics!" /> </form> <?php //php time - echo tables if($visits_table_data) { echo '<h3>Visits</h3>', $visits_table_data,'<br />'; } ?> <?php if(count($visits)): ?> <script type="text/javascript"> var visits = new MilkChart.<?php echo $_GET['type']; ?>('data-table-visits',{ width: 960, height: 550, font: 'tahoma', showValues: false, useFooter: true }); </script> <?php endif; ?>
使用 THEAD、TBODY 和 TFOOT 元素对于确保在生成的图表中放置正确的标签非常重要。数据表本身非常简单。 MilkChart 将采用上表并创建一个包含图表的 CANVAS 元素。
您可以选择五种不同的图表类型:柱形图、条形图、饼图、折线图和散点图。 MilkChart 充分利用了 MooTools 的继承模型,因为每种类型的图表类都扩展了 MilkChart 基类。
我喜欢 MilkChart 开发人员完美利用 MooTools 的 OOP/继承模型的方式。我也很喜欢 MilkChart 要求 HTML 表格的数据最少。 MilkChart 并非没有缺陷。一些表格类型适合包含多个维度(例如,在同一图表中同时使用页面浏览量和访问量),并且价值标签的放置还有待完善。