source: branches/feature-module-update/html/test/naka/graph.php @ 15079

Revision 15079, 4.1 KB checked in by nanasess, 17 years ago (diff)

svn:mime-type application/x-httpd-php; charset=UTF-8 設定

  • Property svn:mime-type set to application/x-httpd-php; charset=UTF-8
Line 
1<?php
2
3require_once("../../require.php");
4
5require_once(HTML_PATH . "admin/total/class/SC_GraphPie.php");
6require_once(HTML_PATH . "admin/total/class/SC_GraphLine.php");
7require_once(HTML_PATH . "admin/total/class/SC_GraphBar.php");
8       
9        $objGraphPie = new SC_GraphPie(400, 250, 80, 70);
10       
11        /* デバッグ表示用 by naka
12        foreach($arrList as $key => $val) {
13            $objGraphPie->debugPrint("key:$key val:$val");
14        }
15        */
16       
17        $arrList = array(
18            '練習A' => 11,
19            '練習B' => 32,
20            '練習C' => 48
21        );
22       
23        // データをセットする
24        $objGraphPie->setData($arrList);
25        // 凡例をセットする
26        $objGraphPie->setLegend(array_keys($arrList));
27       
28        // 円グラフ描画
29        //$objGraphPie->drawGraph();
30       
31        $x = $objGraphPie->cx;
32        $y = $objGraphPie->cy;
33        $z = $objGraphPie->cz;
34        $h = $objGraphPie->ch;
35        $w = $objGraphPie->cw;
36       
37        // データの角度を取得する
38        $arrRad = $objGraphPie->getCircleData($objGraphPie->arrData);
39        $rd_max = count($arrRad);
40       
41        // データが存在しない場合
42        if($rd_max <= 0) {
43            return;
44        }
45       
46        // 影の描画
47        if($objGraphPie->shade_on) {
48            $objGraphPie->drawShade();
49        }
50       
51        // 色数の取得
52        $c_max = count($objGraphPie->arrColor);
53        $dc_max = count($objGraphPie->arrDarkColor);
54       
55        // 側面の描画       
56        for ($i = ($y + $z - 1); $i >= $y; $i--) {
57            $start = 0;
58            for($j = 0; $j < $rd_max; $j++) {
59                // 角度が0度以上の場合のみ側面を描画する。
60                if($arrRad[$j] > 0) {
61                    $end = $start + $arrRad[$j];
62                    if($start == 0 && $end == 360) {
63                        // -90~270で指定すると円が描画できないので0~360に指定
64                        imagearc($objGraphPie->image, $x, $i, $w, $h, 0, 360, $objGraphPie->arrDarkColor[($j % $dc_max)]);
65                    } else {
66                        // -90°は12時の位置から開始するように補正している
67                        imagearc($objGraphPie->image, $x, $i, $w, $h, $start - 90, $end - 90, $objGraphPie->arrDarkColor[($j % $dc_max)]); 
68                    }           
69                    $start = $end;
70                }
71            }
72        }
73       
74
75       
76        // 上面の描画
77        $start = 0;
78        for($i = 0; $i < $rd_max; $i++) {
79            $end = $start + $arrRad[$i];
80            if($start == 0 && $end == 360) {
81                // -90~270で指定すると円が描画できないので0~360に指定
82                imagefilledarc($objGraphPie->image, $x, $y, $w, $h, 0, 360, $objGraphPie->arrColor[($i % $c_max)], IMG_ARC_PIE);           
83            } else {
84                // -90°は12時の位置から開始するように補正している。     
85                imagefilledarc($objGraphPie->image, $x, $y, $w, $h, $start - 90, $end - 90, $objGraphPie->arrColor[($i % $c_max)], IMG_ARC_PIE);
86            }
87            $start = $end;
88        }
89        /*
90        // 底面の描画
91        imagearc($objGraphPie->image, $x, $y + $z, $w, $h, 0, 180 , $objGraphPie->flame_color);
92       
93        // 上面の縁取り
94        $start = 0;
95        for($i = 0; $i < $rd_max; $i++) {
96            $end = $start + $arrRad[$i];
97            if($start == 0 && $end == 360) {
98                // -90~270で指定すると円が描画できないので0~360に指定
99                imagearc($objGraphPie->image, $x, $y, $w, $h, 0, 360 , $objGraphPie->flame_color);
100            }
101            // -90°は12時の位置から開始するように補正している。
102            imagefilledarc($objGraphPie->image, $x, $y, $w, $h, $start - 90, $end - 90, $objGraphPie->flame_color, IMG_ARC_EDGED|IMG_ARC_NOFILL);
103            $start = $end;
104        }
105       
106        // 側面の縁取り
107        imageline($objGraphPie->image, $x + ($w / 2), $y, $x + ($w / 2), $y + $z, $objGraphPie->flame_color);
108        imageline($objGraphPie->image, $x - ($w / 2), $y, $x - ($w / 2), $y + $z, $objGraphPie->flame_color);
109       
110       
111        $start = 0;
112        for($i = 0; $i < $rd_max; $i++) {
113            $end = $start + $arrRad[$i];
114            // 前面のみ
115            if($end > 90 && $end < 270) {
116                list($ax, $ay) = lfGetArcPos($x, $y, $w, $h, $end);
117                // ラインのずれを補正する
118                if($end > 180) {
119                    $ax = $ax + 1;
120                }
121                imageline($objGraphPie->image, $ax, $ay, $ax, $ay + $z, $objGraphPie->flame_color);
122            }
123            $start = $end; 
124        }
125       
126        // ラベルの描画
127        $objGraphPie->drawLabel($arrRad);
128        // 凡例の描画
129        $objGraphPie->drawLegend(count($objGraphPie->arrData));
130        */
131       
132        $objGraphPie->resampled();
133       
134        $objGraphPie->outputGraph();
135        exit();
136?>
Note: See TracBrowser for help on using the repository browser.