大牛,你寫會了教教我吧。。。。
目前成都創(chuàng)新互聯(lián)已為上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計、蘇州網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
別人有成熟的東西為何要自己寫?
況且,這些組件都是基于JS的,跟PHP木有關(guān)系
pChart是一個開源的圖表生成庫,主要涉及3個Class: pChart.class , pData.class , pCache.class ,可生成20多種簡單或復(fù)雜的圖表,支持PNG,JPG,GIF通用圖片格式。數(shù)據(jù)源可以來自于Database,CSV,當(dāng)然也可以手寫。使用該程序PHP需要開啟GD服務(wù),先來看看p
pChart是一個開源的圖表生成庫,主要涉及3個Class:,?,?,可生成20多種簡單或復(fù)雜的圖表,支持PNG,JPG,GIF通用圖片格式。數(shù)據(jù)源可以來自于Database,CSV,當(dāng)然也可以手寫。使用該程序PHP需要開啟GD服務(wù),先來看看pChart的工作流程:
?
主要分為三步:
* 讀取用于生成圖表數(shù)據(jù)(數(shù)據(jù)庫、文件)
* 設(shè)計圖表樣式(圓角、底色等)
* 制作標(biāo)簽、題目、圖例并生成圖表
下面看一個簡單的柱狀圖表:
?
代碼如下:
?php?// Standard inclusionsinclude("pChart/pData.class");
include("pChart/pChart.class");
// Dataset definition?$DataSet?=?newpData;
//圖表數(shù)據(jù)?$DataSet-AddPoint(array(1,4,-3,2,-3,3,2,1,0,7,4),"Serie1");
$DataSet-AddPoint(array(3,3,-4,1,-2,2,1,0,-1,6,3),"Serie2");
$DataSet-AddPoint(array(4,1,2,-1,-4,-2,3,2,1,2,2),"Serie3");
$DataSet-AddAllSeries();
$DataSet-SetAbsciseLabelSerie();
//數(shù)據(jù)圖例?$DataSet-SetSerieName("Microsoft","Serie1");
$DataSet-SetSerieName("IBM","Serie2");
$DataSet-SetSerieName("Google","Serie3");
// Initialise the graph?$Test?=?newpChart(700,230);
//設(shè)置圖表尺寸、樣式?$Test-setFontProperties("Fonts/tahoma.ttf",8);
$Test-setGraphArea(50,30,680,200);
$Test-drawFilledRoundedRectangle(7,7,693,223,5,240,240,240);
$Test-drawRoundedRectangle(5,5,695,225,5,230,230,230);
$Test-drawGraphArea(255,255,255,TRUE);
$Test-drawScale($DataSet-GetData(),$DataSet-GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2,TRUE);
$Test-drawGrid(4,TRUE,230,230,230,50);
// Draw the 0 line?$Test-setFontProperties("Fonts/MankSans.ttf",6);
$Test-drawTreshold(0,143,55,72,TRUE,TRUE);
// Draw the bar graph //柱狀圖要使用drawBarGraph()?$Test-drawBarGraph($DataSet-GetData(),$DataSet-GetDataDescription(),TRUE,80);
// Finish the graph //制作圖例、標(biāo)題、字體等屬性?$Test-setFontProperties("Fonts/MankSans.ttf",10);
$Test-drawLegend(596,150,$DataSet-GetDataDescription(),255,255,255);
$Test-setFontProperties("Fonts/MankSans.ttf",10);
$Test-drawTitle(50,22,"Example",50,50,50,585);
//生成圖表?$imageFile?="example12.png";
$Test-Render($imageFile);
echo?'img src="'.$imageFile.'"'
其實差不多,js圖標(biāo)主要在前端渲染,php做圖標(biāo)主要依托圖標(biāo)內(nèi)庫如pchart,pdata等做后端運算;應(yīng)該說根據(jù)不同的業(yè)務(wù)需求吧;js操作更簡單,前端JS,后端數(shù)據(jù)接口,可分離,php就只能后端程序員做了;再就是php圖標(biāo)雖支持很多圖標(biāo)但是部分特別復(fù)雜的類型還是沒能開放
- PHP進階討論 系統(tǒng)需求:類似統(tǒng)計代碼的記錄PV值和客戶端信息。已有的想法:1:MYSQL建立一個 臨時表和存儲表,記錄到臨時表,定時插入存儲表。2:同1,但使用MYSQL內(nèi)存表,優(yōu)點速度高很多,缺點就是意外當(dāng)機會丟失當(dāng)前內(nèi)存表的數(shù)據(jù)。3:I/O操作 寫文本, 同時建立多個文本進行操作,自己只是認(rèn)為不合適,優(yōu)點和缺點說不明白!4:分析apache日志,這個感覺很有局限性。請教各位phper 這種情況下還有更好的處理方式嗎?------------------------------------------------------------------------生成圖表:統(tǒng)計圖表,查看了已有的一些成熟代碼,都動則幾MB 感覺系統(tǒng)很臃腫。自己寫的話復(fù)雜功能比較難應(yīng)付。主要是餅圖和柱圖
對于數(shù)據(jù)庫來說,數(shù)據(jù)量的大小不是什么障礙,關(guān)鍵是動態(tài)地生成圖表.
生成圖表的例子到處都是,在運行生成圖表的程序之前,你的PHP需要一個GD庫
琢磨了一下,運用之前修改dotproject中文亂碼問題的經(jīng)驗,改了改Libchart,現(xiàn)在成功的支持中文字體了。 做法很簡單: 1、自己寫的使用Libchart庫生成圖表的php文件以utf-8編碼保存 2、找?guī)讉€中文字體庫,比如華文行楷、宋體等等,復(fù)制到libchart\fonts目錄下 3、修改libchart\classes目錄下的text.php文件第47、48行$this-fontCondensed = dirname(__FILE__) . “/../fonts/DejaVuSansCondensed.ttf”; $this-fontCondensedBold = dirname(__FILE__) . “/../fonts/DejaVuSansCondensed-Bold.ttf”;改為$this-fontCondensed = dirname(__FILE__) . “/../fonts/你找來的中文字體”; $this-fontCondensedBold = dirname(__FILE__) . “/../fonts/你找來的中文字體”; now,圖表里現(xiàn)在顯示中文了。