摘要: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的功能真的好強大呀!!!!!