円グラフ生成クラスと例

WBOY
WBOYオリジナル
2016-07-25 09:11:301014ブラウズ
入力パラメータに基づいて円グラフを自動的に生成します。
  1. /*
  2. * 円グラフの画像を生成します
  3. */
  4. class PieChart {
  5. private $center
  6. private $width; //円グラフの直径
  7. private; $image ; //グラフィックオブジェクト
  8. function __construct($width,$backcolor = array(array("r"=>0xFF,"g"=>0xFF,"b"=>0xFF)) {
  9. $this ->width = $width;
  10. $this->center = $width / 2;
  11. //グラフィックオブジェクトを作成します
  12. $this->image = imagecreatetruecolor($this->width, $this -> width);
  13. //初期グラフィックを白で塗りつぶします
  14. $color = imagecolorallocate($this->image, $backcolor[0]["r"], $backcolor[0]["g"] , $backcolor [0]["b"]);
  15. imagefill($this->image, 0, 0, $color);
  16. }
  17. //グラフデータを設定
  18. public functiongraphData($data, $colors ){
  19. $black = imagecolorallocate($this->image, 0x00, 0x00, 0x00);
  20. $sum = array_sum($data);
  21. $start = -90;
  22. for($i=0; $i< count($data); $i++){
  23. $color = imagecolorallocate($this->image, $colors[$i]["r"], $colors[$i]["g"], $colors[ $i]["b"]);
  24. $stop = @($data[$i] / $sum * 360) + $start;
  25. imagefilledarc($this->image, $this- >center , $this->center,
  26. $this->width, $this->width, $start, $stop, $color, IMG_ARC_PIE);
  27. imagefilledarc($this->image, $this -> センター、$this->センター、
  28. $this->幅、$this->幅、$start、$stop、IMG_ARC_NOFILL);
  29. $start = $stop;
  30. }
  31. }
  32. //グラフィックを生成する
  33. public function flashImage(){
  34. header("Content-type:image/png");
  35. imagepng($this->image);
  36. }
  37. }
  38. ?>
コードをコピー
  1. include_once 'piechart.cls.php';
  2. $total = $_GET["total"];
  3. $count = $_GET["count"];
  4. $data = array ($total-$count,$count);
  5. $colors = array(
  6. array('r'=>0xDD,'g'=>0xEE,'b'=>0xFF),
  7. array('r '=>0xFF,'g'=>0xBB,'b'=>0xAA)
  8. );
  9. $chart = new PieChart(200,array(array("r"=>0xF9,"g" =>0xF9,"b"=>0xF9)));
  10. $chart->graphData($data, $colors);
  11. $chart->flushImage();
  12. ?>
コードをコピー


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。