首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP GD 繪製 3D 餅狀圖完整實作:自定義資料、標籤、顏色、標題

     編輯:PHP 綜合知識

功能特色

  • 支援 3D 立體扇區效果(側面 + 頂面填充)。
  • 自動計算百分比、繪製圖例(色塊 + 標籤 + 數值 + 百分比)。
  • 可自訂畫布尺寸、3D 高度、字體大小、標題。
  • 中文支援:iconv('GB2312','UTF-8') + TTF 字體(需 simhei.ttf)。

核心函數簽名

function drawPieImg(
    string $title,
    array $dataArr,      // 數值陣列
    array $labelArr,     // 標籤陣列
    array $colorArr,     // 十六進位顏色陣列 0xRRGGBB
    int $a = 250,        // 橢圓水平半徑
    int $b = 120,        // 橢圓垂直半徑
    int $v = 20,         // 3D 高度
    int $font = 10       // 字體大小
): string // 回傳生成的 PNG 檔名

關鍵演算法

  1. 計算總和,依比例分配角度($data/$total * 360)。
  2. 順時針繪製每個扇區:
    drawSector() 繪頂面 → draw3DSector() 疊加側面(僅 0-180° 可見側面)。
  3. 橢圓弧以 ANGLELENGTH=3° 線段逼近(drawArc())。
  4. 側面顏色 = 頂面顏色 RGB 各除 2(drawDarkColor())。
  5. 圖例區:色塊矩形 + imagettftext() 繪製中文標籤。

使用範例

$title = '動物園動物種類分布';
$dataArr = [20, 10, 20, 20, 10, 20, 30, 10];
$labelArr = ['大象','長頸鹿','鱷魚','鴕鳥','老虎','獅子','猴子','斑馬'];
$colorArr = [0x99ff00, 0xff6666, 0x0099ff, 0xff99ff, 0xffff99, 0x99ffff, 0xff3333, 0x009999];

$imgFile = drawPieImg($title, $dataArr, $labelArr, $colorArr);
echo '<img src="' . $imgFile . '">';

輸出模式

  • 預設:產生 time().'.png' 檔案並回傳檔名,適合網頁嵌入。
  • 若需直接輸出:在函數末尾改為 header('Content-Type: image/png'); imagepng($img); imagedestroy($img);。

擴充建議

  • 加入圖片標題、圖例位置參數化。
  • 支援數值標籤直接顯示在扇區上(需計算扇區中心座標)。
  • 整合 pChart、Chart.js (前端) 等成熟圖表庫取代手繪。

結語

純 GD 繪製 3D 餅圖展示了幾何計算與像素操作的結合,適合無法安裝擴展的環境或教學用途。生產系統建議採用前端圖表庫(ECharts、Chart.js)分擔伺服器渲染壓力並提供互動體驗。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved