Jpgraph 因為用到所以寫相關文做紀念?(加入月份判斷)

  • 1662
  • 0

摘要:Jpgraph 因為用到所以寫相關文做紀念?

先給結果圖:

 

還不是真的很漂亮就是XDDD

基本上跟範例沒什麼兩樣,

如果你不知道那是什麼,就上網搜尋、下載吧。

我的程式碼是這樣:


<?php // content="text/plain; charset=utf-8"
define('TTF_DIR', './');
define('CHINESE_TTF_FONT','mingliu.ttc');
require_once ('jpgraph/jpgraph.php');
require_once ('jpgraph/jpgraph_line.php');

$datay1 = array(20,15,23,15);
$datay2 = array(12,9,42,8);
$datay3 = array(5,17,32,24);
$datay4 = array(23,10,6,16);

// Setup the graph
$graph = new Graph(600,400);
$graph->SetScale("textlin");

$theme_class=new UniversalTheme;

$graph->SetTheme($theme_class);
//$graph->title->SetFont(FF_CHINESE, FS_NORMAL);
$graph->xaxis->SetFont(FF_CHINESE, FS_NORMAL);
$graph->yaxis->SetFont(FF_CHINESE, FS_NORMAL);
$graph->xaxis->title->SetFont(FF_CHINESE, FS_NORMAL);
$graph->yaxis->title->SetFont(FF_CHINESE, FS_NORMAL);
$graph->legend->SetFont(FF_CHINESE, FS_NORMAL);
$graph->subtitle->SetFont(FF_CHINESE, FS_NORMAL);
$graph->subsubtitle->SetFont(FF_CHINESE, FS_NORMAL);
$graph->tabtitle->SetFont(FF_CHINESE, FS_NORMAL);
$graph->img->SetAntiAliasing(false);
//$graph->title->Set('');
$graph->SetBox(false);

$graph->img->SetAntiAliasing();

$graph->yaxis->title->Set("量数");
$graph->yaxis->HideZeroLabel();
$graph->yaxis->HideLine(false);
$graph->yaxis->HideTicks(false,false);
$graph->yaxis->title->SetMargin(10); 

$date="2";
$days="2月";
$dayMonth="日/$days";
$graph->xgrid->Show();
$graph->xgrid->SetLineStyle();
$graph->xaxis->title->Set("$dayMonth");
$graph->xaxis->SetTickLabels(array("$date",'B','C','D'));
$graph->xgrid->SetColor('#E3E3E3');
$graph->xaxis->title->SetMargin(10);

// Create the first line
$p1 = new LinePlot($datay1);
$graph->Add($p1);
$p1->SetColor("#6495ED");
$p1->SetLegend('カメラ数量');

// Create the second line
$p2 = new LinePlot($datay2);
$graph->Add($p2);
$p2->SetColor("#B22222");
$p2->SetLegend('Onlineカメラ');

// Create the third line
$p3 = new LinePlot($datay3);
$graph->Add($p3);
$p3->SetColor("#FF1493");
$p3->SetLegend('メンバー量');

// Create the forth line
$p4 = new LinePlot($datay4);
$graph->Add($p4);
$p4->SetColor("#00FF00");
$p4->SetLegend('Onlineメンバー');

$graph->legend->SetFrameWeight(1);

// Output line
$graph->Stroke();

?>

通常會遇到的問題有兩個,一個是中文問題。

SV找超久,因為SV是要顯示日文Orz(但找對方向,任何語言都沒差)

結果找到這一篇:

http://ray-code-book.blogspot.tw/2011/06/jpgraph.html

 

我很推薦這篇,因為SV的就是Linux伺服器Orz

話說原來Windows的字型都擺在C:/Windows/Fonts底下,20年來我今天才發現=口=|||
所以一樣把裡面的minliu.ttc複製到路徑底下(跟你的php檔同資料夾)。

接著第二個問題就是x軸與y軸的標題顯示。

如果簡單顯示只要$graph->yaxis->title->Set("量数");

就可以了↑因為y軸會顛倒,所以中文字要相反打XDDDDD

但是大家就會發現跟Y軸的座標擠在一起!

所以要改距離:

$graph->yaxis->title->SetMargin(10);

雖然都很簡單,但是很多人問,因此PO出來~

其實都是網上找到的小技巧啦~

 

然後你會發現SV的月日都用變數,因為資料到時候要抓資料庫,

所以等3月份就會變成"3月"。這樣的好處就是在前面撈資料然後放進去。

當然,$datay1 = array(20,15,23,15); 也需要撈資料,但SV還沒去撈(應該說Server排程等等還沒做)Orz

還有一個是在圖片上顯示數據,比方第一個點是"20"

那就是加入$p1->value->Show(); 之類的......不過SV改了顯示不出來......應該是哪裡有問題,如果需要的捧油可以用這個當關鍵字~

 

使用才發現網上真的有好多好多很好的文章呢!

我以前都不知道php有繪圖功能......

 

順帶一提,要輸入不同語言,

有很簡單的方法,就是將右下角的語言列按設定值,將你要的語言加入(像SV是加入日文),

然後就可以使用了Orz

想當年還下載櫻x輸入......

原來有這麼簡單的方法@@

 

新增:

雖然月份很簡單,

分享一下(其實是用笨方法):

 


$month=`date`;
$monthis=explode(" ",$month);
$days="";
if($monthis[1]=="Jan")
{
	$days="1月";
}
else if($monthis[1]=="Feb")
{
	$days="2月";
}
else if($monthis[1]=="Mar")
{
	$days="3月";
}
else if($monthis[1]=="Apr")
{
	$days="4月";
}
else if($monthis[1]=="May")
{
	$days="5月";
}
else if($monthis[1]=="Jun")
{
	$days="6月";
}
else if($monthis[1]=="Jul")
{
	$days="7月";
}
else if($monthis[1]=="Aug")
{
	$days="8月";
}
else if($monthis[1]=="Sep")
{
	$days="9月";
}
else if($monthis[1]=="Oct")
{
	$days="10月";
}
else if($monthis[1]=="Nov")
{
	$days="11月";
}
else
{
	$days="12月";
}

 

最前面的`date`就是很方便的shell指令~

其實他顯示的東西是這樣:
Wed Jan 30 12:01:57 CST 2013

所以用字串分割然後取[1]的位置。

聽說正式的英文有幾個不是用3個英文字母來代表簡寫XDDD(用4個)

因此之前使用這個方法讓SV有這樣的困惑@@

結果證實他是用3個英文字母,因此可以這樣判斷囉~

 

新增:

唉~我又老馬了XDDD

 

原來這樣就可以算今天日子了:

$years = date("Y"); //用date()函式取得目前年份格式0000
$months = date("m"); //用date()函式取得目前月份格式00
$days = date("d"); //用date()函式取得目前日期格式0

 

可以參考這篇文章:

http://www.omega.idv.tw/kdb120/viewthread.php?threadid=2283

 

總歸一句:php的功能真的好強大呀!!!!!