สร้างกราฟด้วย PHP

เรื่องของเรื่องคืออยากได้วิธีสร้างกราฟด้วย PHP แล้วก็ search ไปเจอวิธีใน google เข้า
แต่ไอ้วิธีที่เจอเนี่ย เอามาลองปรับแล้วใช้กับภาษาไทยไม่ได้แฮะ ทำไปทำมา แก้ไปแก้มา เลยได้ความออกมา ดังนี้



ส่วนนี้ copy มาจาก //www.binarywebhost.com/forum/index.php?topic=2.msg2


เริ่มแรกเราต้องทำให้ PHP เรียกใช้ Graphic Library ที่เรียกว่า GD ให้ได้ก่อน โดยทำการค้นหาไฟล์ php.ini (สำหรับ Windows จะอยู่ที่ C:WINDOWSphp.ini  ส่วน Linux ปกติจะอยู่ที่ /etc/php.ini) จากนั้นเปิดไฟล์ขึ้นมาเพื่อแก้ไข

ให้ค้นหาบรรทัด
;extension=php_gd2.dll หรือ
;extension=php_gd.dll
จากนั้นเอาเครื่องหมาย ; ออก ซึ่งจะได้เป็น
extension=php_gd2.dll หรือ
extension=php_gd.dll

จากนั้นทำการ restart apache ใหม่ แล้วลองใช้ function phpinfo(); เพื่อดูว่า PHP เราสามารถใช้งาน GD ได้หรือยัง

หรืออาจจะลองเขียนสคลิปสั้น ๆ เพื่อทดสอบการทำงานของ GD ก็ได้เพื่อความแน่ใจ
header('Content-type: image/gif');
$image = imagecreate( 100, 100 );
imagejpeg($image);
?>

ถ้าเห็นเป็นสี่เหลี่ยมขึ้นมาก็แสดงว่าสามารถใช้งาน GD ได้แล้วครับ

เอา หล่ะครับ ก็มาถึงขึ้นตอนสำคัญกัน นั้นก็คือการสร้างกราฟที่เลิศหรูอลังการดาวล้านดวง ไม่ยากครับ แต่ไปดาวน์โหลด Graph Library ที่มีชื่อว่า jpgraph จากเว็บ 
//www.aditus.nu/jpgraph/


พอเข้าไปที่ jpgraph ก็ให้ดาวน์โหลด
   1. PHP5: JpGraph 2.x - series
   2. ตัว Snapshots ที่ใช้กับตัว PHP 5.x
แตกไฟล์ 1 แล้วทับด้วยไฟล์ 2


ต่อไปเป็นวิธีเซตให้แสดงภาษาไทยได้
(อ้างอิงจาก : //pitaksan.spaces.live.com/blog/cns!30A89FF8A61DCA49!246.entry แต่เอามาปรับให้เข้ากับ code ที่ทำ)


การเซ็ต jpgraph ให้แสดงภาษาไทย

1.เข้าไปในไฟล์  jpgraph_ttf.inc.php

 

ค้นหา

// Actual name of the TTF file used together with FF_CHINESE aka FF_BIG5
// This is the TTF file being used when the font family is specified as
// either FF_CHINESE or FF_BIG5
define('CHINESE_TTF_FONT','bkai00mp.ttf');

เพิ่ม ต่อจากด้านบน
define('CORDIA_TTF_FONT', 'cordia.ttf');
define('CORDIAB_TTF_FONT', 'cordiab.ttf');
define('CORDIAI_TTF_FONT', 'cordiai.ttf');
define('CORDIAZ_TTF_FONT', 'cordiaz.ttf');
 
define('ANGSA_TTF_FONT', 'ANGSA.ttf');
define('ANGSAB_TTF_FONT', 'ANGSAB.ttf');
define('ANGSAI_TTF_FONT', 'ANGSAI.ttf');
define('ANGSAZ_TTF_FONT', 'ANGSAZ.ttf');
 
define('BROWA_TTF_FONT', 'BROWA.ttf');
define('BROWAB_TTF_FONT', 'BROWAB.ttf');
define('BROWAI_TTF_FONT', 'BROWAI.ttf');
define('BROWAZ_TTF_FONT', 'BROWAZ.ttf');

ค้นหา (จะอยู่ใน class TTF)

 /* Chinese fonts */
    FF_SIMSUN  =>  array(
    FS_NORMAL =>'simsun.ttc',
    FS_BOLD =>'simhei.ttf',
    FS_ITALIC =>'',
    FS_BOLDITALIC =>'' ),
    FF_CHINESE  =>   array(
    FS_NORMAL =>CHINESE_TTF_FONT,
    FS_BOLD =>'',
    FS_ITALIC =>'',
    FS_BOLDITALIC =>'' ),

เพิ่ม ต่อจากด้านบน

 /* Thai fonts */
 FF_CORDIA => array(
 FS_NORMAL=>CORDIA_TTF_FONT,
 FS_BOLD=>CORDIAB_TTF_FONT,
 FS_ITALIC=>CORDIAI_TTF_FONT,
 FS_BOLDITALIC=>CORDIAZ_TTF_FONT ),
   
 FF_ANGSA => array(FS_NORMAL=>ANGSA_TTF_FONT,
 FS_BOLD=>ANGSAB_TTF_FONT,
 FS_ITALIC=>ANGSAI_TTF_FONT,
 FS_BOLDITALIC=>ANGSAZ_TTF_FONT ),
 
 FF_BROWA => array(FS_NORMAL=>BROWA_TTF_FONT,
 FS_BOLD=>BROWAB_TTF_FONT,
 FS_ITALIC=>BROWAI_TTF_FONT,
 FS_BOLDITALIC=>BROWAZ_TTF_FONT ),

2.เข้าไปในไฟล์ jpgraph.php

ค้นหา

// For internal use only
define("_JPG_DEBUG",false);
define("_FORCE_IMGTOFILE",false);
define("_FORCE_IMGDIR",'/tmp/jpgimg/');

เพิ่ม ต่อจากด้านบน

//thai font
define("FF_ANGSA",18);
define("FF_CORDIA",19);
define("FF_BROWA",20);

3.เข้าไปในไฟล์ gd_image.inc.php

เพิ่ม ไว้ส่วนบนๆ ต่อจาก require_once ก็ได้

//thai font
define("FF_ANGSA",18);
define("FF_CORDIA",19);
define("FF_BROWA",20);


4.วิธีใช้

- เปลี่ยนค่าตรง SetFont เป็น SetFont(FF_ANGSA,FS_BOLD,20); ตัวเลขเป็นขนาดตัวอักษร

- ข้อความที่จะแสดงให้แปลงเป็น UTF-8 ด้วย


ตัวอย่าง

// Setup the titles
// แบบที่ 1

$title = iconv('TIS-620','UTF-8',"แสดงกราฟภาษาไทย");
$graph->title->Set($title);


// แบบที่ 2
$graph->xaxis->title->Set(iconv('TIS-620','UTF-8',"แกน X"));
$graph->yaxis->title->Set(iconv('TIS-620','UTF-8',"แกน Y"));


ปล. 1 จะใช้กราฟรูปแบบไหน ก็เอา code จาก jpgraph/src/Examples มาปรับใช้

ปล. 2 เอามาลง blog เพื่อไว้เตือนตัวเองจ๊ะ ไม่ได้จะหาประโยชน์ มีอะไรก็แบ่งๆ กานนนน Smiley


-------------------------------------------------------------

เพิ่มเติมภาพที่ได้จากการปรับให้แสดงภาษาไทย



Create Date : 17 มิถุนายน 2552
Last Update : 18 มิถุนายน 2552 8:18:56 น.
Counter : 3039 Pageviews.

2 comments
  
หรือจะเป็นตัวนี้ก็ได้นะครับ ง่ายดีผมว่านะ
//faker-programmer.blogspot.com/2009/06/php.html
โดย: คนผ่านมาเจอ IP: 192.55.18.36 วันที่: 25 มิถุนายน 2552 เวลา:12:07:26 น.
  
ขอบคุณค่ะ จะลองเล่นดู
โดย: StarniC วันที่: 4 กรกฎาคม 2552 เวลา:15:43:35 น.
ชื่อ :
Comment :
 *ใช้ code html ตกแต่งข้อความได้เฉพาะสมาชิก
 

StarniC
Location :
จันทบุรี  Thailand

[ดู Profile ทั้งหมด]
 ฝากข้อความหลังไมค์
 Rss Feed
 Smember
 ผู้ติดตามบล็อก : 1 คน [?]



มิถุนายน 2552

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
18
19
20
21
22
23
24
25
26
27
28
29
30
 
 
17 มิถุนายน 2552