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

JpGraph 繪製長條圖完整實作:解決中文亂碼與進階設定

     編輯:PHP 相關知識

JpGraph 是 PHP 強大的圖表庫,本文示範長條圖完整實作,重點解決中文顯示亂碼問題,並說明關鍵設定參數。

完整代碼範例

<?php
require_once 'jpgraph-3.0.7/jpgraph/jpgraph.php';
require_once 'jpgraph-3.0.7/jpgraph/jpgraph_bar.php';

// 模擬資料
$userNames = ['張三', '李四', '王五', '趙六', '錢七'];
$userOrders = [120, 85, 200, 60, 150];

// 建立圖表畫布 (寬800, 高600)
$graph = new Graph(800, 600);
$graph->SetScale('textlin'); // X軸文字, Y軸線性

// X軸標籤設定
$graph->xaxis->SetTickLabels($userNames);
$graph->xaxis->SetFont(FF_SIMSUN, FS_NORMAL, 12); // 關鍵:指定中文字型
$graph->xaxis->SetLabelAngle(45); // 標籤傾斜45度避免重疊

// Y軸留白
$graph->yaxis->scale->SetGrace(20);
$graph->xaxis->scale->SetGrace(20);

// 陰影與邊距
$graph->SetShadow();
$graph->img->SetMargin(60, 40, 40, 80); // 左、右、上、下

// 建立長條圖
$barPlot = new BarPlot($userOrders);
$barPlot->SetFillColor('#FF8C00'); // 橙色
$barPlot->value->Show(); // 顯示數值
$barPlot->value->SetFont(FF_ARIAL, FS_BOLD, 10);
$barPlot->value->SetAngle(45);
$barPlot->value->SetFormat('%d');

$graph->Add($barPlot);

// 標題與軸標籤(關鍵:使用 FF_SIMSUN 支援中文)
$graph->title->Set('用戶訂單統計圖');
$graph->title->SetFont(FF_SIMSUN, FS_BOLD, 16);
$graph->xaxis->title->Set('用戶姓名');
$graph->xaxis->title->SetFont(FF_SIMSUN, FS_BOLD, 12);
$graph->yaxis->title->Set('訂單數量');
$graph->yaxis->title->SetFont(FF_SIMSUN, FS_BOLD, 12);

// 輸出圖片
$graph->Stroke();
?>

中文亂碼核心解決方案

問題解決方法
標題/軸標籤亂碼使用 FF_SIMSUN 字型常數(需 JpGraph 3.0+ 內建)
X軸刻度標籤亂碼$graph->xaxis->SetFont(FF_SIMSUN, FS_NORMAL, 12)
數值標籤亂碼$barPlot->value->SetFont(FF_SIMSUN, FS_NORMAL, 10)
PHP 檔案編碼確保檔案儲存為 UTF-8 無 BOM

關鍵字型常數說明

  • FF_SIMSUN:SimSun(新細明體/宋體),內建支援中文
  • FF_VERDANA、FF_ARIAL:僅支援拉丁字元
  • FS_NORMAL、FS_BOLD、FS_ITALIC:字體樣式

進階客製化

  • 漸層填色:$barPlot->SetFillGradient('#FF8C00', '#FFD700', GRAD_HOR)
  • 圖例:$barPlot->SetLegend(['2024年訂單']) + $graph->legend->SetFont(FF_SIMSUN, FS_NORMAL, 10)
  • 網格線:$graph->ygrid->Show(true) / $graph->xgrid->Show(false)
  • 輸出檔案:$graph->Stroke('chart.png') 存檔而非直接輸出

常見問題排查

  1. 確認 php_gd2.dll 擴展已啟用
  2. JpGraph 版本 ≥ 3.0 才內建 FF_SIMSUN
  3. 若仍有亂碼,檢查 PHP 檔案編碼是否為 UTF-8
  4. 生產環境建議 $graph->Stroke('cache/chart_'.md5($data).'.png') 快取圖片
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved