ホームページ  >  記事  >  バックエンド開発  >  PHP によるグラフィックスの生成 (Libchart) example_PHP チュートリアル

PHP によるグラフィックスの生成 (Libchart) example_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:25:27842ブラウズ

統計グラフィックスはよく見るデータグラフィックスです。3つの配列をグラフィックスで表示したり、不動産をグラフィックスで表示したりする場合に、必要なときに非常に便利なphp LIbchartグラフィック生成クラスを紹介します。それに。
単純な整数または英語の場合は、次のクラスを直接使用できます(libchartクラスはBaiduからダウンロードできます)

コードをコピーします コードは次のとおりです:

/*
更新 by Leo
シートの画像を描画し、画像上のすべての数値を取得します。
*/
require "./libchart/classes/libchart.php";
class drawPic{
var $chart;
var $style;
functiondrawPic($style="1",$width="500",$height="250"){
$this->style=$style;
if($style==1){
//cylinder
$this->chart = newverticalbarchart($width,$height);
}else if($style==2){
//line
$this->chart = new LineChart($width,$height);
}else if($style==3){
//Lump
$this->chart = new PieChart($width,$height);
}else{
//cross
$this->chart=new horizo​​ntalBarchart($width,$height);
}
}

functiondraw($obj){

if($this->style==1||$this->style=="1"){
//cylinder
$dataSet = new XYDataSet() ;
$ this->chart->setTitle($obj->title);//title
$arr=array();
$arr=$obj->dataArray;
foreach($arr as $key => ; $val){
$dataSet->addPoint ( new Point($key,$val)) ;
}
$this->chart->setDataSet ( $dataSet ) ;
$this->chart->render();
}else if($this->style==2||$this->style=="2"){
//line
$this ->chart->setTitle($obj->title);//title
$arr=array();
$arr=$obj->dataArray;
$i=0;
$dataSet = new XYSeriesDataSet();
foreach($arr as $key => $val){
$serie{$i}= new XYDataSet();
foreach($val as $k => $v){
$serie {$i}->addPoint(new Point($k,$v));
}
$dataSet->addSerie($key,$serie{$i});
$i=$i+1;
}
$this->chart->setDataSet($dataSet);
$this->chart->render();
}else if($style==3){
//Lump
$ dataSet = new XYDataSet() ;
$this->chart->setTitle($obj->title);//title
$arr=array();
$arr=$obj->dataArray;
foreach($arr as $key =>$val){
$dataSet->addPoint ( new Point($key."($val)",$val)) ;
}
$this->chart- >setDataSet ( $dataSet ) ;
$this->chart->render();
}else{
//cross
$dataSet = new XYDataSet();
$this->chart->setTitle($obj->title) ;//title
$arr=array();
$arr=$obj->dataArray;
foreach($arr as $key => $val){
$dataSet->addPoint ( new Point($ key,$val)) ;
}
$this->chart->setDataSet($dataSet);
$this->chart->render();
}
}

}
class kkk{};
$n=newdrawPic("4");//1 または 2 または 3 または4
$k=new kkk();
$k->dataArray=array("2000"=>"30","2001"=>"40","2002"=>"50", "2003"=>"60","2004"=>"70","2005"=>"80","20020"=>"90");//style==1 または style= 2 または style=4
//$k->dataArray=array("2000"=>"30","2001"=>"40","2002"=>"50","2003" =>"60","2004"=>"70","2005"=>"80","20020"=>"90");//style==3
//$k- >dataArray=array("yi"=>array("2000"=>"30","2001"=>"40","2002"=>"50","2004"=>> "60"),"er"=>array("2003"=>"60","2004"=>"70","2005"=>"80","20020"=>" 90"),"san"=>array("33"=>"12","45"=>"56","89"=>"45","86"=>"49 "));//style==2 と、ブロックする最初の配列が年によって表示されます。(2000 2001 2002 2004 が表示されます)
$k->title="シート タイトル";
$n->描画($k);
?>

赤い文字は通話です。メソッド 1、2、および 4 は同じ配列です。図 3 は線グラフです。比較のために 2 つの線または複数の線が存在する場合があります (単一の線の場合もあります)。
中国語を使用したい場合は、libchart の中国語の文字が文字化けすることがあります。解決策は次のとおりです。 アプリケーションの主なソース コードは次のとおりです。


コードをコピーします。 コードは次のとおりです。
header("content-type:image/png");
require_once ('libchart/classes/libchart .php');

$chart = newverticalbarchart(500, 250) // パラメータは作成される画像の幅と高さを表します
$dataSet = new XYDataSet(); / XY 軸データオブジェクトをインスタンス化します

// このオブジェクトに 4 つのデータ セットを追加します。 Point オブジェクトの最初のパラメーターは X 軸座標を表します。

// 2 番目のパラメーターは Y 軸座標を表します
$str = 'April';

$str = mb_convert_encoding( $str, "html-entities","utf-8" );

$dataSet -> addPoint ( new Point( "2005 年 1 月" , 273 )) ;

$dataSet -> addPoint ( new Point( "$str" , 120 )) ;
$dataSet -> ( "March 2005" , 442 )) ;
$dataSet -> addPoint ( new Point( "April 2005" , 600 )) ;
// このデータセットをグラフィックオブジェクトに渡します
$chart -> dataSet ) ;
// グラフのタイトルを設定し、PNG ファイルとしてレンダリングします
$chart -> setTitle ( "Statistical Chart" ) ;

//$chart -> render ( "demo/generated/demo1; .png" ) ;
// ここにパスとファイル名が必要です
// 非常にシンプルで、下の図のような美しいヒストグラムが表示されます
$chart -> render () ;
?>

赤く囲った箇所は中国語の文字化け問題を解決する箇所です。
2. タイトルが文字化けします:
デフォルトの中国語表示が文字化けするのは、次の変更を加えます:
まず、libchar/libchart/classes/view/chart/Chart.php を変更して、次の内容を見つけます。

コードをコピーします コードは次のとおりです:
public function setTitle($title) {

コードをコピーします

コードは次のとおりです:


public function setTitle($title) {
);} 3 番目のステップ: 上記のブログで説明されています:
1. チャートを生成するために Libchart ライブラリを使用して作成した php ファイルは、utf-8 エンコーディングで保存されます
2. いくつかの中国語を検索します。中国語の楷書、宋体などのフォント ライブラリを libchart フォント ディレクトリにコピーします
3. libchart クラス ディレクトリの 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/あなたが見つけた中国語フォント";
変更したもの:

コードをコピーします

コードは次のとおりです:

public function Text() {
$baseDir = dirname(__FILE__) "/../../../" ;

// Bitstream Vera に基づく無料の低解像度フォント $this->fontCondensed = $baseDir "fonts/FANGZHENGFANGSONG.ttf"; $this-> ;fontCondensedBold = $baseDir . "fonts/FANGZHENGFANGSONG.ttf"; }

FANGZHENGFANGSONG.ttf このファイルは私が見つけた方正模倣宋簡体字フォントに中国語名を変更したものですが、変更しなくても大丈夫です。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/825094.html技術記事統計グラフィックスはよく見るデータグラフィックスで、3つの配列をグラフィック表示したり、不動産をグラフィック表示したりする場合に、グラフィックスを使用します...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。