본문 바로가기

PHP관련

그래프(chart ... )를 그려 보자 ㅡㅡ;

다운받는곳

http://www.aditus.nu/jpgraph/jpdownload.php

출처:

http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=11175&sca=&sfl=wr_subject%7C%7Cwr_content&stx=%B1%D7%B7%A1%C7%C1&sop=and&page=3

처음으로 글을 써보내요...

모 대단한건 아니구요... GD를 이용해서 그래프를 그리려고 하는데...

여기서 검색을 해 보니깐.. JpGraph라는 라이브러리가 있더라구요... 그래서... GD 설치하고...

그 라이브러리 설치하고... 등등... 그래프를 그리는 것 까지는 성공했는데...

한글을 쓰기 위해서.. 고생한 끝에... 찾았습니다... 그래서 이렇게 글을 올립니다...

사실... 전 중국어까지 써야하는 고통이 있는데... 한글을 성공했으니깐.. 중국어도 성공하겠죠?? ^^;;;

###################################################################################

본론으로 돌아가면... 일단 한글을 쓰기 위해서는 True Type의 폰트 파일이 있어야 합니다..

전 New Gulim으로 했구요...

jpgraph.php 파일만 수정해 주시면 되는데...

1. 다운 받은 폰트 파일을 특정 폴더에 넣고... 그 폴더를 등록해 주셔야 합니다...

jpgraph.php의 21번째 줄에 보면 폰트 디렉토리 셋팅하는 부분이 있습니다... 그 곳을 바꿔주시구요...

ex) DEFINE("TTF_DIR","XXXXXXXXXX\\JpGraph\\TTF\\");
(XXX는 절대 경로입니다... 상대경로는 안 해봤는데... 누가 한번 해 보세요... ^^)

2. 134번째 줄 뒤에... DEFINE을 해 주시면 됩니다...

ex) DEFINE("FF_GULIM",17);

3. 그리구 폰트 페밀리에 등록해 주시면 됩니다... (1376번째 정도에)

ex)
$this->font_fam=array(
FF_COURIER => TTF_DIR."courier",
FF_VERDANA => TTF_DIR."verdana",
FF_TIMES => TTF_DIR."times",
FF_HANDWRT => TTF_DIR."handwriting",
FF_COMIC => TTF_DIR."comic",
FF_ARIAL => TTF_DIR."arial",
FF_BOOK => TTF_DIR."bookant",
FF_GULIM => TTF_DIR."ngulim"
);
여기까지가 문서에 나와 있는 부분인데...

이렇게 해두 안 되길래.. 제가 직접 소스를 살펴봤습니다...

그래서 발견한 부분이...

3660번째 줄 정도인데...

elseif($this->font_family >= FF_COURIER && $this->font_family <= FF_GULIM) { // TTF font

이 줄의 FF_GULIM이 FF_BOOK으로 되어있습니다... 이 부분에서 걸려서 안 되더라구요..

이곳만 바꿔주시면 됩니다...

그리구 사용하실때...

$graph->title->SetFont(FF_GULIM,FS_NORMAL, 12);

이렇게 하시면 됩니다... FS_NORMAL 부분은 폰트 파일이 여러개 있어야 바꿔줄수 있는거 확인 하시구요... 전 nGulim.ttf 밖에 없어서 FS_NORMAL 밖에 되지 않더라구요...

그럼.. 모두들 수고하세용....

참... 틀린 부분이 있으면 지적해 주시기 바랍니다...

그럼...

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

jggraph는 http://sf.net 에서 검색하면 첫번째로 나옵니다. 2004.07.05 현재 버전이 1.16 입니다.

버전이 달라지면서 jpgraph.php에서 고칠 부분이 약간 다른데, FF_GULIM 을 정의하는 부분과 FF_GULIM에 대해 폰트파일(예: ngulim.ttf)을 지정하는 부분 이렇게 2곳만 고쳐주면 됩니다.

실제로 그래프를 그리는 파일에서 한글글꼴을 지정해주고, 문자열은 유니코드로 변환해줘야 합니다. 예를 들면

// 타이틀
$graph->title->Set(iconv(\'euc-kr\',\'utf-8\',\'한글제목\'));
$graph->title->SetFont(FF_GULIM,FS_NORMAL,18);

// x축 라벨
$lbl = array(\"김동준\",\"신동엽\",\"김장훈\",\"신성우\",\"하희라\",\"차인표\",\"전지현\");
$graph->xaxis->SetTickLabels($lbl);
$graph->xaxis->SetFont(FF_GULIM,FS_NORMAL,9);

대략 이런 방식입니다.

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

정정 : $lbl 배열에도 실제로 iconv() 변환된 문자열이 들어가야 합니다.

다른 방법으로는 php 문서 자체의 문자셋을 UTF-8로 변환하는 방법이 있습니다. editplus 와 같이 지원하는 에디터에서는 iconv() 를 거칠 필요가 없어 편리할 수도 있습니다.