李如桃 許樂清
摘 要:圖形化的成績分析系統,試圖采用PHP語言及JpGraph類庫實現學生課業成績在WEB頁面中的圖形化展示。將數據經過匯總分析,進行橫向、縱向比對,以圖表的表式簡潔、直觀、清晰地展現出來,為教學實施提供指導依據。研究PHP語言在行業數據發布與展示系統中的應用,JpGraph類庫數據填圖的技術實現。
關鍵詞:PHP;JpGraph;圖形;數據
引言
教師在教學實施中累積了大量的數據,反映了學生在每一階段的學習狀態,可作為形成性考核成績的一部分。目前這些數據表現大都是離散的、滯后的,如何通過系統的分析,將數據以可視化的圖表展現出來,簡潔易懂、一目了然,為后續的教學實施提供參考。這是本論文研究的重點。
為了實現對教學過程數據的快速查詢、匯總及圖形化顯示,設計開發了圖形化的成績分析系統。采用瀏覽器/ 服務器(B/S)模式,Apache+ PHP+MySQL框架。圖形顯示模塊的實現,是利用基于PHP 語言的JpGraph類庫進行數據填圖,實現代碼簡單,大大縮短了軟件代碼開發過程。文章圍繞JpGraph圖像生成技術展開。
1 系統的設計方案
圖形化的成績分析系統的設計理念是將學生形成性考核中,每階段的作業情況,與課程對應的崗位能力需求就行匹配,展示差距,明確后階段學習的重點方向。考慮到各崗位對具體能力的不同需求,成績不再是一個籠統的分數,而是根據能力細分為若干個指標。
如圖1所示,柱狀圖表示學生需要達到的崗位最低要求,折線為學生現有水平,可以清晰地反映出,其中兩項能力,同學們己經達到崗位要求,另外四項崗位能力,需要在后續課程中加強訓練。
圖1
圖形化的展示模塊是本系統開發的重點,主要設計以下幾個類型圖表:
(1)匯總數據分析圖,反映學生平均水平與各崗位能力需求的對比。將所有考評成績按考核指標求平均,與各崗位需求數值比較作圖,對應不同的崗位,系統生成不同的圖形。
(2)學情動態圖,反映學生個體、整體的學業情況,各學習階段成績縱向比較。如:給定學生姓名和崗位能力,以圖形顯示其在這項指標上的進步情況。
(3)崗位匹配圖,綜合學生多次考核數據,與各崗位需求對比,以確定學生是否能勝任對應工作崗位。
2 JpGraph庫介紹
JpGraph類庫是基于PHP 語言編寫的面向對象的圖形類庫,其繪圖組件能根據用戶的需求生成多種類型的圖表,包括折線圖、柱狀圖和餅狀圖等。圖片可以在網頁上直接顯示,也可保存為多種格式的圖片。首先從數據庫中取得統計數據,定義標題、圖表類型等,然后通過PHP 中的JpGraph類庫, 便可在統計數據的基礎上完成各類統計圖。
JpGraph可在http://jpgraph.net網站下載,目前常用的版本是jpgraph-3.5.0b1.tar.gz。下載完JpGraph類庫后解壓縮至PHP存放類庫的地方,為其文件夾命名為jpgraph,這樣使用JpGraph時可以通過以下語句調用該庫。
<?php
require_once('jpgraph/jpgraph.php');
?>
JpGraph是基于GD 庫設計的,系統中一定要支持GD庫。需要編輯php.ini配置文件,將“extension=php_gd2.dll”一行前面的分號去掉,確保啟用GD擴展。
3 圖形處理實現
在WEB 頁面上創建和使用JpGraph圖片的主要步驟為:
(1)創建腳本,獲得數據。
(2)生成圖片,指定圖片如何構建、圖形大小、顏色、字體以及要在圖片上展示的其他內容。
(3)在Web頁面上以img標簽顯示圖像。
3.1 獲取數據
為與一般辦公軟件兼容,成績數據初始文件為excel電子表格,以csv格式保存,可通過本系統導入到mySQL數據庫中,主要代碼為:
<?php
mysql_query("LOAD DATA INFILE 'import.csv' INTO TABLE `score1` character set gbk FIELDS TERMINATED BY ',' ENCLOSED BY '\"' ESCAPED BY '\"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES;") or die ('Error: '.mysql_error ());
?>
上段代碼中,character set gbk參數是關鍵,用于將csv編碼格式與mySQL中表格編碼格式相匹配,確保中英文字符的正確導入。
3.2 生成圖片
以圖1所示崗位達標圖為例,以下為主要代碼。生成的圖片反映了學生平均水平與指定崗位之間的對比,圖表由柱狀圖與折線圖二部分組成,填圖部分代碼如下所示。
<?php
require_once ('..\jpgraph\src\jpgraph.php');
require_once ('..\jpgraph\src\jpgraph_bar.php');
require_once ('..\jpgraph\src\jpgraph_line.php');
//生成圖表
$graph = new Graph(450,220,'auto');
$graph->SetScale("textlin");
$graph->yaxis->SetTickPositions(array(0,2,4,6,8,10,12,14,16,18,20), array(1,3,5,7,9,11,13,15,17,19));
$graph->SetBox(false);
$graph->ygrid->SetFill(false);
$graph->xaxis->SetTickLabels(array('layout','integrity','details','color','norm','innovation'));
$graph->yaxis->HideLine(false);
$graph->yaxis->HideTicks(false,false);
//創建柱狀圖
$b1plot = new BarPlot($datay);
$graph->Add($b1plot);
$b1plot->SetColor("white");
$b1plot->SetFillGradient("#4B0082","white",GRAD_LEFT_REFLECTION);
$b1plot->SetWidth(22);
//創建折線圖
$p1 = new LinePlot($standardline);
$graph->Add($p1);
$p1->SetColor("#55bbdd");
$p1->mark->SetType(MARK_FILLEDCIRCLE,'',1.0);
$p1->mark->SetColor('#55bbdd');
$p1->mark->SetFillColor('#55bbdd');
$p1->SetCenter();
// 顯示圖片,生成圖片文件。
$myfile = "picture-01.png";
if (file_exists($myfile)) {
$result=unlink ($myfile);
}
$graph->Stroke('picture-01.png');
?>
3.3 在Web頁上顯示圖表
嵌入SQL語句,從數據庫中讀入成績數據,并傳遞給填圖文件,生成的圖片在頁面中顯示。
<?php
require('connect.php');
//獲取柱狀圖的數據,datay
$str_sql="select avg(layout),avg(integrity),avg(details),avg(color),avg(norm),avg(innovation) from score1";
$result=$conn->query($str_sql);
$datay=$result->fetch_row();
//獲取折線圖的數據,standardline
$str_sql="select layout,integrity,details,color,norm,innovation from standard where worknamelike '%一類崗位%'";
$result=$conn->query($str_sql);
$standardline=$result->fetch_row();
//調用圖表生成模塊
require("picture.php" );
?>
4 結束語
本系統針對課業成績數據的分析匯總,設計各類直觀的圖表格式。通過研究JpGraph在WAMP架構網站下的繪圖模板及繪圖函數調用,方便快捷地實現了折線圖、柱狀圖、餅狀圖、雷達圖等數據圖形的自動生成。協助教師直觀得了解學生的學習狀態,把控教學進度;幫助學生了解各項知識技能的掌握情況,明確學習目標。系統具用一定的實用價值。
參考文獻
[1]徐章韜.圖表:構建知識網絡的一種可視化工具[J].中國數學教育,2013.
[2]趙利平.使用PHP技術構造Web服務器日志分析軟件[D].天津大學,2007.
[3]魏丹丹.論基于B/S結構的DAQ數據庫信息查詢與圖形顯示系統的研究與實現[D].鄭州大學,2010.
[4]張金區.面向統計數據的三位一體可視化關聯分析[J].計算機工程,2012.