茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1670499 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
F09_683.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

PHP特區 : [分享]JpGraph

發表者 討論內容
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[分享]JpGraph

[php] JPGraph



簡介 ::
作網頁需要使用到自動生成的圖片製作報表的時候,是否常常被 image function 一堆長長的指令搞暈頭,而在算幾個px的時候又再一次暈頭。來嚐試這個方便的繪圖物件吧!

official

方法:

<img src="graphing.php"/>


當作圖片宣告
graphing.php:

		<?
		//jpgraph的使用方法
		//這頁會輸出一張圖片, 欲使用的話插入圖片, src是這頁的URL即可
		require("config.php");
		include_once ("./jpgraph/src/jpgraph.php");
		include_once ("./jpgraph/src/jpgraph_bar.php");

		$SQL = "SELECT UID, COUNT(UID) AS count FROM `performance` GROUP BY UID ORDER BY COUNT(UID) DESC";
		$query = mysql_query($SQL);
		while($result = mysql_fetch_array($query)){
		  $name[] .= $result['UID'];
		  $count[] .= $result['count'];
		}

		// Create the graph. These two calls are always required
		$graph = new Graph(600,400,"auto");
		$graph->SetScale("textint");
		$graph->SetColor("lightyellow");

		// Add a drop shadow
		$graph->SetShadow();

		// Adjust the margin a bit to make more room for titles
		$graph->img->SetMargin(60,30,30,50);

		// Create a bar pot
		$bplot = new BarPlot($count);
		// 長條的顏色
		$bplot->SetFillColor('navy');
		// 長條的寬度
		$bplot->SetWidth(70);
		$graph->Add($bplot);

		// Setup the titles
		$graph->title->Set("performance of pilotTV");
		//設定字體 設成中文字
		$graph->title->SetFont(FF_CHINESE, FS_NORMAL, 12);

		$graph->yaxis->SetFont(FF_CHINESE);
		$graph->xaxis->SetFont(FF_CHINESE);

		$graph->xaxis->title->SetFont(FF_CHINESE, FS_NORMAL, 12);
		$graph->yaxis->title->SetFont(FF_CHINESE, FS_NORMAL, 12);
		$graph->xaxis->title->Set("姓名");
		$graph->yaxis->title->Set("業績");
		$graph->yaxis->title->SetAngle(0);
		$graph->yaxis->title->Align('left');
		$graph->xaxis->SetTickLabels($name);

		// Display the graph
		$graph->Stroke();
		?>
	



參考文件:
JpGraph :: php的繪圖物件 :: 幻想的世界
在世界的中心呼喊正太 - [php] 用php製作圖表 - JpGraph
minealan's tech: [php] JPGraph
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[分享]讓php jpgraph支持中文的例子
讓php jpgraph支持中文的例子

以前用PHP作圖時必須要掌握複雜抽像的畫圖函數,或者借助一些網上下載的花柱形圖、餅形圖的類來實現。沒有一個統一的chart類來實現圖表的快速開發。

JpGraph就是解決這個問題的一個不錯的類庫。

jpgraph的官網:http://www.aditus.nu/jpgraph/

最新版本:支持PHP4的v1.2、支持PHP5的v3。

讓php jpgraph支持中文的例子

PHP:
<?php
include (./graph/jpgraph.php);
include (./graph/jpgraph_bar.php);
// Some data
$databary=array(152,7,16,5,7,14,9,3);
$databarx= array(中文,德文, hi, d,dddd,a,b,e) ;
// New graph with a drop shadow
$graph = new Graph(300,200,auto);
//$graph->SetShadow();
// Use a text X-scale
$graph->SetScale(textlin);
/**
* X坐標的內容
*/
$graph->xaxis->SetTickLabels($databarx);
//$graph->xaxis->SetTextLabelInterval(3);
$graph->xaxis->SetFont(FF_SIMSUN,FS_NORMAL);
// Set title and subtitle
$graph->title->Set(測試數據);
// Use built in font
/**
* 使用中文字體支持中文的顯示
*/
$graph->title->SetFont(FF_SIMSUN,FS_BOLD,14);
// create the bar plot
$b1 = new BarPlot($databary);
/**
* 這個是 圖例
*/
$b1->SetLegend(Temperature);
/**
* 這個是 柱狀的寬度
*/
$b1->SetAbsWidth(6);
/**
* 這個是 柱狀的投影, 不要
*/
//$b1->SetShadow();
// The order the plots are added determines whos ontop
$graph->Add($b1);
// Finally output the image
$graph->Stroke();
?>


注意,如果使用的是linux服務器,如果沒有安裝truetype字體,則需要上傳相關的字體到linux的/usr/X11R6/lib/X11/fonts/truetype目錄,上面的例子就需要傳
/usr/X11R6/lib/X11/fonts/truetype/simhei.ttf
/usr/X11R6/lib/X11/fonts/truetype/simsun.ttc


原文出處:讓php jpgraph支持中文的例子
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[分享]如何讓 JpGraph 顯示中文

如何讓 JpGraph 顯示中文


這篇是我在網路上的好友 chihwen 向我提到的,JpGraph 能否顯示中文?我在和他討論後,找到了方法,便把它記在這裡了。
JpGraph 是一套包裝 GD 函式庫,可用來顯示圖表的 PHP 類別程式。新版 (1.17) 已支援顯示中文,而不必我們手動轉換。

安裝


在使用 JpGraph 之前,請先確認安裝了:
  • GD2 (繪圖函式庫)
  • iconv (字元編碼轉換函式庫)

以上的函式庫在最新版的 PHP5 Win32 版已內建,並請在 PHP.INI 設定好。
將最新版的 JpGraph 下載回來後,找到 src 資料夾,將它更名為 jpgraph ,然後放到 PHP.INI 指定的 include_path 下。
(在原 src 資料夾下有個 Examples 子資料夾,裡面有很多不錯的範例。)
接著在更名後的 jpgraph 資料夾下,找到 jpg-config.inc 檔,修改以下的設定:
DEFINE('CHINESE_TTF_FONT','bkai00mp.ttf');

我個人偏好用新細明體,所以我改成:
DEFINE('CHINESE_TTF_FONT','mingliu.ttc');

在 Windows 系統上, JpGraph 會自行抓取系統的字型存放路徑,所以基本上不需擔心路徑問題。

範例


我們來看看一個範例 (取自PHP之戀)
<?php
include ("jpgraph/jpgraph.php");
include ("jpgraph/jpgraph_pie.php");
include ("jpgraph/jpgraph_pie3d.php");
$data = array(40, 60, 21, 33, 50);
$graph = new PieGraph(400, 200);
$graph->SetShadow();

$graph->title->SetFont(FF_BIG5, FS_NORMAL);
$graph->legend->SetFont(FF_BIG5, FS_NORMAL);

$graph->title->Set("中文");
$p1 = new PiePlot3D($data);
$p1->SetSize(0.5);
$p1->SetCenter(0.45);
$p1->SetLegends(array("中文","2","3","4","5"));
$graph->Add($p1);
$graph->Stroke();
?>

執行結果如下圖:
執行結果
重點就是我們只要針對 $graph 裡的屬性值,像是 title 、 legend 等設定 SetFont(FF_BIG5) 或是 SetFont(FF_CHINESE) ,就能正常顯示中文了。

補充


chihwen 發現原本的 Pie3D 所呈現的圖樣顏色 (Legend) 和資料呈現的顏色無法對應,我到官方網站去搜尋的結果,找到了一篇討論:http://jpgraph.intellit.nl/viewtopic.php?t=2087&highlight=pieplot3d
修正方式:
找到 jpgraph_pie.php ,並做以下的修改:
第 229 行,加上 strtolower() 如下:
if( strtolower(get_class($this))==='pieplot3d' ) {

第 236 行,加上 strtolower() 如下:
if( $graph->pieaa && strtolower(get_class($this))==='pieplot' ) {

這是 PHP4 轉 PHP5 未向下相容的問題,因為預設 get_class() 在 PHP4 回傳都會是小寫,但 PHP5 則是大小寫有別所造成。
以上資訊感謝 chihwen 提供~~

補充


新版的 JpGraph 已解決上面的問題,請記得更新!


原文出處:網站製作學習誌 » 如何讓 JpGraph 顯示中文
前一個主題 | 下一個主題 | 頁首 | | |



Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|