日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

[codeigniter]CI中使用pChart绘制图表,已测通过

發(fā)布時(shí)間:2025/5/22 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [codeigniter]CI中使用pChart绘制图表,已测通过 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?


因?yàn)橐粋€(gè)codeigniter開發(fā)的項(xiàng)目上要用到圖表。FusionChart是flash技術(shù),在某些情況下可能造成無(wú)法使用(如ipad)。因此不禁想起了之前用Pchart做的圖表項(xiàng)目。
但是畢竟是在CI里,有時(shí)候?yàn)榱宋呛峡蚣艿奶匦?#xff0c;不得不去遷就而修改自己的代碼。
最初我的想法是把Pchart的類文件放在libraries文件里,然后在controllers控制器里調(diào)用,可以總是出現(xiàn)各種錯(cuò)誤。嘗試了很多次都是失敗,難道在CI里用Pchart這么難?!!!
于是去百度+谷歌上去找相關(guān)的資料。找到了N多篇相同的標(biāo)題為“在CI中使用pChart庫(kù)”這類的文章,并且內(nèi)容都95%驚人的相似。看來(lái)世界的確是大同了,思想都一樣了(不太喜歡貼別人文章不表明轉(zhuǎn)載的,人家博主寫篇文章多費(fèi)勁啊,你這得了便宜還賣乖,粘貼下成自己的了。).
好吧,看下思路,大致是在libraries里多創(chuàng)建一個(gè)類,來(lái)調(diào)用Pchart的類,進(jìn)而達(dá)到使用目的。不知道大伙有沒(méi)有測(cè)試,不過(guò)我這邊測(cè)試的時(shí)候總有問(wèn)題,于是心里很著急,又嘗試了很多次,還是失敗。于是就想自己寫算了。不過(guò)還是運(yùn)用了網(wǎng)絡(luò)上文章的思路。即把Pchart類包放置于libraries下。但是調(diào)用類中的方法確實(shí)自己運(yùn)用之前非CI框架下的方法。
目錄架構(gòu)類似于這樣:
--demoweb
? --application
??? --....
??? --libraries
????? --pChart
--pChart的眾類文件
????? --Mychart.php
??? --...
? --system

? 個(gè)人是把字體都和Pchart的類文件都放在pChart這個(gè)目錄里的。等下看代碼的時(shí)候大家就會(huì)注意到了。
? 下面貼出來(lái)Mychart.php(即調(diào)用的pchart的類文件),以及控制器里方法的測(cè)試示例代碼:

Mychart.php示例代碼:

?

?

<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); /** * FOR:調(diào)用pchart類繪制圖表 * @author cheng.yafei * @version 1.0 **/ class Mychart {/** * FOR:畫圖,立體餅圖 * @param $dataArray 詳細(xì)票數(shù)數(shù)組 * @param $reportArr 詳細(xì)票數(shù)對(duì)應(yīng)選項(xiàng)數(shù)組 **/ function draw3DPieImage($dataArray, $lableArray) {include(dirname(__FILE__)."/pChart/pData.class");include(dirname(__FILE__)."/pChart/pChart.class");$datanum = $dataArray;$dataname = $lableArray;// Dataset definition $DataSet = new pData;$DataSet->AddPoint($datanum,"Serie1");$DataSet->AddPoint($dataname,"Serie2");$DataSet->AddAllSeries();$DataSet->SetAbsciseLabelSerie("Serie2");$Test = new pChart(420,220);$Test->drawFilledRoundedRectangle(7,7,415,213,5,240,240,240);//灰色圓角背景$Test->drawRoundedRectangle(5,5,417,215,5,230,230,230);//灰色圓角框// Draw the pie chart$Test->setFontProperties(dirname(__FILE__)."/pChart/yahei.ttf",8);$Test->drawPieGraph($DataSet->GetData(),$DataSet->GetDataDescription(),150,90,110,PIE_PERCENTAGE,TRUE,50,20,5);$Test->drawPieLegend(310,15,$DataSet->GetData(),$DataSet->GetDataDescription(),250,250,250);$totalStr = '(共'.array_sum($datanum).'票)';$Test->drawTitle(20,20,$totalStr,50,50,50,380);//標(biāo)題;drawTitle(20,20,參數(shù)名,50,50,50,380) 20左邊距,$rand = rand(100,300);$image_name = $rand.'_3dpie.png';$image_file_name = dirname(dirname(dirname(__FILE__))).'/actpic/'.$image_name; $Test->Render($image_file_name); // header("content-type:text/html;charset=utf-8;");echo dirname(dirname(dirname(__FILE__))).'/actpic'."<br>";echo "<h3>餅圖:</h3><img src='http://localhost/repaction/actpic/".$image_name."'><br>"; }//end function draw3DPieImage 立體餅圖/******************************* * FOR:畫圖,分離的餅圖 * @param $dataArray 詳細(xì)票數(shù)數(shù)組 * @param $reportArr 詳細(xì)票數(shù)對(duì)應(yīng)選項(xiàng)數(shù)組 ********************************/ function drawDepartPieImage($dataArray, $lableArray) { include(dirname(__FILE__)."/pChart/pData.class");include(dirname(__FILE__)."/pChart/pChart.class");$datanum = $dataArray;$dataname = $lableArray;// Dataset definition $DataSet = new pData;$DataSet->AddPoint($datanum,"Serie1");//投票數(shù)字$DataSet->AddPoint($dataname,"Serie2");//對(duì)應(yīng)文本$DataSet->AddAllSeries();$DataSet->SetAbsciseLabelSerie("Serie2");// Initialise the graph$Test = new pChart(370,220);//(長(zhǎng),寬)畫布長(zhǎng)寬$Test->drawFilledRoundedRectangle(7,7,353,213,5,240,240,240);//灰色圓角背景$Test->drawRoundedRectangle(5,5,355,215,5,230,230,230);//灰色圓角框// Draw the pie chart$Test->setFontProperties(dirname(__FILE__)."/pChart/yahei.ttf",8);$Test->AntialiasQuality = 0;$Test->drawFlatPieGraph($DataSet->GetData(),$DataSet->GetDataDescription(),120,100,60,PIE_PERCENTAGE,10);//畫餅圖$Test->drawPieLegend(230,15,$DataSet->GetData(),$DataSet->GetDataDescription(),250,250,250);//畫選項(xiàng)圖$totalStr = '(共'.array_sum($datanum).'票)';$Test->drawTitle(20,20,$totalStr,50,50,50,380);//標(biāo)題;drawTitle(20,20,參數(shù)名,50,50,50,380) 20左邊距, $rand = rand(100,300);$image_name = $rand.'_departpie.png';$image_file_name = dirname(dirname(dirname(__FILE__))).'/actpic/'.$image_name; $Test->Render($image_file_name);echo "<h3>離散餅圖:</h3><img src='http://localhost/repaction/actpic/".$image_name."'><br>"; }// end drawDepartPieImage /******************************* * FOR:畫圖,柱狀圖 * @param $dataArray 詳細(xì)票數(shù)數(shù)組 * @param $reportArr 詳細(xì)票數(shù)對(duì)應(yīng)選項(xiàng)數(shù)組 ********************************/ function drawBarImage($dataArray, $lableArray) {include(dirname(__FILE__)."/pChart/pData.class");include(dirname(__FILE__)."/pChart/pChart.class");// Dataset definition $DataSet = new pData;foreach($dataArray as $k=>$v){$DataSet->AddPoint($v, "Serie".$k);$DataSet->SetSerieName($lableArray[$k], "Serie".$k);}$DataSet->AddAllSeries();$DataSet->SetAbsciseLabelSerie();// Initialise the graph$Test = new pChart(700,230);$Test->setFontProperties(dirname(__FILE__)."/pChart/yahei.ttf",8);$Test->setGraphArea(50,30,550,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(dirname(__FILE__)."/pChart/yahei.ttf",6);$Test->drawTreshold(0,143,55,72,TRUE,TRUE);// Draw the bar graph$Test->drawBarGraph($DataSet->GetData(),$DataSet->GetDataDescription(),TRUE);// Finish the graph$Test->setFontProperties(dirname(__FILE__)."/pChart/yahei.ttf",8); // $Test->drawLegend(596,150,$DataSet->GetDataDescription(),255,255,255);$Test->drawLegend(580,30,$DataSet->GetDataDescription(),255,255,255);//(左邊距,上邊距,描述....)$Test->setFontProperties(dirname(__FILE__)."/pChart/yahei.ttf",10);$Test->drawTitle(50,22,"投票",50,50,50,585);$rand = rand(100,300);$image_name = $rand.'_zhuzhuang.png';$image_file_name = dirname(dirname(dirname(__FILE__))).'/actpic/'.$image_name; $Test->Render($image_file_name);echo "<h3>離散餅圖:</h3><img src='http://localhost/repaction/actpic/".$image_name."'><br>";}//end function drawBarImage 柱狀圖}//END class

?

?

然后再在控制器的方法里調(diào)用這個(gè)類使用:

?

?

function test(){$this->load->library('mychart'); //載入pChart庫(kù)$dataArray = array('54','95','158','241','19');$lableArray = array('成龍','施瓦辛格','龍格爾','史泰龍','李連杰');$this->mychart->draw3DPieImage($dataArray,$lableArray);}//end functionfunction test2(){$this->load->library('mychart'); //載入pChart庫(kù)$dataArray = array('555','95','158','241','19');$lableArray = array('黃家駒','平克弗洛伊德','譚詠麟','張學(xué)友','劉德華');$this->mychart->drawDepartPieImage($dataArray,$lableArray);}//end functionfunction test3(){$this->load->library('mychart'); //載入pChart庫(kù)$dataArray = array('369','95','158','241','19');$lableArray = array('黃家駒','平克弗洛伊德','譚詠麟','張學(xué)友','劉德華');$this->mychart->drawBarImage($dataArray,$lableArray);}//end function

?

?

?

?

測(cè)試代碼,稍顯凌亂。需要的可以測(cè)試下。知識(shí)就是共享的。如果有問(wèn)題的話可以在下面跟帖提問(wèn)。
請(qǐng)注意使用的時(shí)候,一定注意寫對(duì)調(diào)用字體文件的路徑。

?

嘿嘿,其實(shí)博客園這次并不是首發(fā),但是看到院子里這個(gè)點(diǎn)不多,所以放了進(jìn)來(lái)。請(qǐng)大家多提些意見。

?

轉(zhuǎn)載于:https://www.cnblogs.com/chengyafei/archive/2012/07/04/ci_pchart.html

總結(jié)

以上是生活随笔為你收集整理的[codeigniter]CI中使用pChart绘制图表,已测通过的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。