웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
그래프 만들어주는 소스
2004.10.15 16:48
그래프 만드는 소스가 필요해서 여기 게시판을 뒤졌더니 zzony 님 소스가 나오더군요.
그 소스를 함수화 해서 쉽게 쓸수 있도록 고쳤습니다.
아래 소스는 폼 데이터를 전송 받아 그래프를 생성하지만
폼 데이터 대신 소스에서 생성된 데이터로 그래프를 만드는것이
직접 사용하는 방식이 될겁니다.
zzony 님 원래 글 : http://www.nzeo.com/bbs/zboard.php?id=p_study&desc=asc&no=293
소스 테스트 : http://allzza.net/my.php
수정한대로 그래프가 고쳐지지 않으면 새로고침해서 보세요
<?
$e = "./tt/test.png";
if($a) {
$aa = explode(",",$a);
if($d) $dd = explode(",",$d);
bar_graph($aa,$b,$c,$dd,$e);
echo "<img src="$e">";
}
function bar_graph($val,$x,$y,$x_val,$img_url) { //-- 막대 그래프 만들어주는 함수
/*
$val : 값을 원소로 하는 배열
$x : 그래프 가로축 크기
$y : 그래프 세로축 크기
$x_val : x축 값의 이름 배열
$img_url : 저장할 파일의 경로와 이름(png)
*/
$gaesu = count($val); //-- 그래프 막대 갯수
$makde_pok = ($x / $gaesu) / 3; //-- 막대 하나 폭
$real_y = $y - 40; //-- 그래프가 그려질 실제 위치
$max_value = $val[0];
for ($i=0;$i<$gaesu;$i++) {
if($val[$i] > $max_value) $max_value = $val[$i];
}
$im = @ImageCreate($x,$y) or die ("이미지를 초기화 하지 못했습니다");
$backgroundcolor=ImageColorAllocate($im,234,253,231); //-- 그랩 바탕색
$rectanglecolor = ImageColorAllocate($im,65,127,250); //-- 그랩 색깔
$white=ImageColorAllocate($im,255,255,240); //-- 그랩 바닥색
ImageFilledRectAngle($im,0,$real_y,$x,$y,$white);
for ($i=0;$i<$gaesu;$i++) {
($i == 0) ? $makde_x[$i] = $makde_pok: $makde_x[$i] = ($makde_x[$i - 1] + $makde_pok * 3);
$makde_y[$i] = $real_y - ($val[$i]/$max_value) * $real_y; //-- 각각의 막대 y 좌표
ImageFilledRectAngle($im,$makde_x[$i],$makde_y[$i],$makde_x[$i]+$makde_pok,$real_y,$rectanglecolor);
($makde_y[$i] - 15 < 0) ? $y_string = 0 : $y_string = $makde_y[$i] - 15;
Imagestring($im,5,$makde_x[$i],$y_string,$val[$i],imagecolorallocate($im,42,31,21));
Imagestring($im,3,$makde_x[$i],$y-30,$x_val[$i],imagecolorallocate($im,42,31,21));
}
ImagePNG($im,$img_url);
ImageDestroy($im);
}
?>
<form name=my method=post action="<?=$PHP_SELF;?>">
값 : <input type=text size=50 name=a value="<?=$a;?>"><br>
가로 : <input type=text size=5 name=b value="<?=$b;?>"><br>
세로 : <input tpye=text size=5 name=c value="<?=$c;?>"><br>
값이름 : <input type=text size=50 name=d value="<?=$d;?>"><br>
파일 이름 : <input type=text readonly size=30 value="<?=$e;?>" name=e><br>
<input type=button value="구래푸 맹글기" onclick='this.form.submit()'>
</form>
값 : 각 그래프가 가르키는 값입니다. 콤마로 구분하고 맨뒤엔 콤마를 찍지 마세요.
물론 각각의 값은 숫자....여야겠죠.
가로 : 그래프 가로 크기입니다.픽셀 단위.
세로 : 그래프 세로 크기. 픽셀 단위
값이름 : 그래프 밑에 각각의 막대를 값으로 가지는 이름. 역시 콤마로 구분하고 맨뒤엔 콤마 찍지 마세요.
한글 들어가니까 글자가 깨지네요.
파일이름 : 폴더와 파일 이름을 적어주는데 폴더는 nobody 에게 쓰기 권한이 있어야 합니다.
(이해하기 힘들면 그냥 퍼미션 **7 로 끝자린 7로 맞추심 됩니다.)
나도 인터넷 셋방 사는 처지라서 파일 이름은 바꾸지 못하게 고정 시켜놨습니다.
이런저런 그림파일이 계정에 생성 되면.... 내 방 좁아질까봐서리...
그래프의 막대 갯수는 값을 기준으로 생성 됩니다. 값이름이 갯수에 모자라면 null 로 채워지고
값이름이 갯수에서 남으면 남은 부분은 써지지 않습니다.
그 소스를 함수화 해서 쉽게 쓸수 있도록 고쳤습니다.
아래 소스는 폼 데이터를 전송 받아 그래프를 생성하지만
폼 데이터 대신 소스에서 생성된 데이터로 그래프를 만드는것이
직접 사용하는 방식이 될겁니다.
zzony 님 원래 글 : http://www.nzeo.com/bbs/zboard.php?id=p_study&desc=asc&no=293
소스 테스트 : http://allzza.net/my.php
수정한대로 그래프가 고쳐지지 않으면 새로고침해서 보세요
<?
$e = "./tt/test.png";
if($a) {
$aa = explode(",",$a);
if($d) $dd = explode(",",$d);
bar_graph($aa,$b,$c,$dd,$e);
echo "<img src="$e">";
}
function bar_graph($val,$x,$y,$x_val,$img_url) { //-- 막대 그래프 만들어주는 함수
/*
$val : 값을 원소로 하는 배열
$x : 그래프 가로축 크기
$y : 그래프 세로축 크기
$x_val : x축 값의 이름 배열
$img_url : 저장할 파일의 경로와 이름(png)
*/
$gaesu = count($val); //-- 그래프 막대 갯수
$makde_pok = ($x / $gaesu) / 3; //-- 막대 하나 폭
$real_y = $y - 40; //-- 그래프가 그려질 실제 위치
$max_value = $val[0];
for ($i=0;$i<$gaesu;$i++) {
if($val[$i] > $max_value) $max_value = $val[$i];
}
$im = @ImageCreate($x,$y) or die ("이미지를 초기화 하지 못했습니다");
$backgroundcolor=ImageColorAllocate($im,234,253,231); //-- 그랩 바탕색
$rectanglecolor = ImageColorAllocate($im,65,127,250); //-- 그랩 색깔
$white=ImageColorAllocate($im,255,255,240); //-- 그랩 바닥색
ImageFilledRectAngle($im,0,$real_y,$x,$y,$white);
for ($i=0;$i<$gaesu;$i++) {
($i == 0) ? $makde_x[$i] = $makde_pok: $makde_x[$i] = ($makde_x[$i - 1] + $makde_pok * 3);
$makde_y[$i] = $real_y - ($val[$i]/$max_value) * $real_y; //-- 각각의 막대 y 좌표
ImageFilledRectAngle($im,$makde_x[$i],$makde_y[$i],$makde_x[$i]+$makde_pok,$real_y,$rectanglecolor);
($makde_y[$i] - 15 < 0) ? $y_string = 0 : $y_string = $makde_y[$i] - 15;
Imagestring($im,5,$makde_x[$i],$y_string,$val[$i],imagecolorallocate($im,42,31,21));
Imagestring($im,3,$makde_x[$i],$y-30,$x_val[$i],imagecolorallocate($im,42,31,21));
}
ImagePNG($im,$img_url);
ImageDestroy($im);
}
?>
<form name=my method=post action="<?=$PHP_SELF;?>">
값 : <input type=text size=50 name=a value="<?=$a;?>"><br>
가로 : <input type=text size=5 name=b value="<?=$b;?>"><br>
세로 : <input tpye=text size=5 name=c value="<?=$c;?>"><br>
값이름 : <input type=text size=50 name=d value="<?=$d;?>"><br>
파일 이름 : <input type=text readonly size=30 value="<?=$e;?>" name=e><br>
<input type=button value="구래푸 맹글기" onclick='this.form.submit()'>
</form>
값 : 각 그래프가 가르키는 값입니다. 콤마로 구분하고 맨뒤엔 콤마를 찍지 마세요.
물론 각각의 값은 숫자....여야겠죠.
가로 : 그래프 가로 크기입니다.픽셀 단위.
세로 : 그래프 세로 크기. 픽셀 단위
값이름 : 그래프 밑에 각각의 막대를 값으로 가지는 이름. 역시 콤마로 구분하고 맨뒤엔 콤마 찍지 마세요.
한글 들어가니까 글자가 깨지네요.
파일이름 : 폴더와 파일 이름을 적어주는데 폴더는 nobody 에게 쓰기 권한이 있어야 합니다.
(이해하기 힘들면 그냥 퍼미션 **7 로 끝자린 7로 맞추심 됩니다.)
나도 인터넷 셋방 사는 처지라서 파일 이름은 바꾸지 못하게 고정 시켜놨습니다.
이런저런 그림파일이 계정에 생성 되면.... 내 방 좁아질까봐서리...
그래프의 막대 갯수는 값을 기준으로 생성 됩니다. 값이름이 갯수에 모자라면 null 로 채워지고
값이름이 갯수에서 남으면 남은 부분은 써지지 않습니다.
댓글 10
-
예뜨락
2004.10.16 01:55
언제나 좋은 소스를 내 놓으시네요 ^^ -
미친개
2004.10.17 05:45
Imagestring 함수에서 한글 입력 하는 방법 가르쳐주시는분 계시면
무척 이뻐해드릴껀데......ㅡ,.ㅡ
막대그래프 + 선그래푸 : http://allzza.net/my2.php -
Simsim
2004.10.17 15:46
하핫.. 막대 그래프.... -
코즈
2004.10.17 23:48
이것을 응용하면 활용할 부분이 많이 많아보이네요.
통계시스템이라던가? 근데.. 너무 단순한 것이 흠인데...
그래도 좋은 소스 감사하고요.
그래도 새로운 소스를 내놓으신 미친개님... 감사하네요.
새롭게 눈을 떴습니다. -
TheMics
2004.10.18 16:26
GD에서 한글을 입력하는 가장 좋은 방법은 iconv 라이브러리를 이용하는 겁니다.
물론 서버에 설치되어있어야겠죠. iconv("EUC-KR", "UTF-8",$val[$i]) 요렇게 쓰면 됩니다.
서버에 iconv가 설치되어있지 않다면 최효섭님의 함수를 이용하면 됩니다.
http://phpschool.com/bbs2/inc_view.html?id=9597&code=tnt2이곳에서 다운로드하실 수 있구요..
str2uni($val[$i]) 이케 하면 되겠죠. -
Simsim
2004.10.18 16:55
허벅!!! mics님 말듣고 해보러.. -
미친개
2004.10.18 20:18
TheMics/
조언 감사합니다.
두번째 함수는 미스최파일을 인꿀루드 해서 쓰시란 말씀 같은데
해보니 ttf 이미지 생성에서는 한글대신 � 같이 그냥 유니코드값이
뿌려집디다.
첫번째껀 확인해보겠습니다.
라이브러리라면 인클루드해서 써야 하는건지 아니면 그냥 써도 되는 함수인지 궁금하네요. -
TheMics
2004.10.19 00:00
어라 이상하네요..imagestring 대신 imagettftext로 한번 테스트해보세요;;
그리고 iconv는 서버에 설치만 되어있다면 바로 사용 가능합니다. :) -
이승원
2004.10.25 17:44
높이가 1픽셀 인 이미지로 태그로 높이 값을 올려주는게 더 간편할것 같은데요 [img src="" width=10 height=원하는높이] -
LuFia
2004.11.05 23:08
이승원// 그래도 gd에서 그게 되나요 ..?
제목 | 글쓴이 | 날짜 |
---|---|---|
재미있는놀이 [ 숫자맞추기] [3] | NzeoZen | 2003.08.16 |
[수정]롤오버 메뉴에 하위 부메뉴 레이어..(아웃시 하위메뉴사라짐) [24] | 미니 | 2003.08.18 |
경우에 따라 공지가 새창에서도 보여야 하고, 일반 페이지에서도 보여야 할때 | 조은하루 | 2003.08.22 |
마우스 움직임에 따라 속도도, 방향도 자유자재 스크롤 소스 [1] | RedEye(kaist) | 2003.08.24 |
메인 접속하면 할아버지 나오는... [6] | 공유 | 2003.08.28 |
변수의 실제 바이트 수를 리턴하는 팁 [2] | 한승진 | 2003.08.29 |
변수에서 숫자만 리턴합니다. | 한승진 | 2003.08.29 |
전화번호 유효성 검사(핸폰,집전화 몽땅) [4] | 한승진 | 2003.08.29 |
주어진 값이 한글,영어,숫자인지 체크 [2] | 한승진 | 2003.08.29 |
frame으로 홈페이지 구성시 한쪽 페이지는 유동성있는 파일 대입법(?) | monozzang | 2003.09.02 |
홈에 TT WEB FTP 달기 [12] | PHASE | 2003.09.03 |
진수란? [4] | 타키 | 2003.09.04 |
변수란? [1] | 타키 | 2003.09.04 |
### MSN/Windows Messenger용 친구 추가스크립트 ### [10] | 웹스 | 2003.09.05 |
플레쉬 메뉴를 표방한..=ㅁ= 자바스크립트의 수작 버튼 밑으로 스크롤 되는 아이콘입니다. [47] | beMax | 2003.09.14 |
[초간단 자바스크립트!] 창 이동시 경고 메세지 띄우기...!;;; [2] | ∑Ztxy | 2003.09.26 |
[초간단 자바스크립트!] 뒤로,앞으로,중지,홈으로 버튼 만들기... [7] | ∑Ztxy | 2003.09.26 |
[초간단 자바스크립트!] 이미지에 스포트라이트 효과주기... [1] | ∑Ztxy | 2003.09.26 |
[초간단 자바스크립트(강의)!] 버튼을 눌러서 배경색 바꾸기 [5] | ∑Ztxy | 2003.09.26 |
[초간단 자바스크립트(강의)!] 풀스크린 창 띄우기... [3] | ∑Ztxy | 2003.09.27 |