当前位置:首页 > PHP

php实现图表统计

2026-02-15 23:49:21PHP

PHP 实现图表统计的方法

使用 GD 库生成基础图表

PHP 的 GD 库可以创建简单的图表。以下是一个生成柱状图的示例代码:

<?php
$width = 400;
$height = 300;
$image = imagecreatetruecolor($width, $height);

$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);
$red = imagecolorallocate($image, 255, 0, 0);

imagefill($image, 0, 0, $white);

$data = [30, 50, 70, 90, 110];
$barWidth = 50;
$maxValue = max($data);

for ($i = 0; $i < count($data); $i++) {
    $barHeight = ($data[$i] / $maxValue) * ($height - 50);
    imagefilledrectangle($image, $i * $barWidth + 30, $height - $barHeight - 20, 
                         ($i + 1) * $barWidth, $height - 20, $red);
}

header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>

使用第三方库(如 JpGraph)

JpGraph 是一个专业的 PHP 图表库,支持多种图表类型:

php实现图表统计

  1. 下载并安装 JpGraph
  2. 创建折线图示例:
<?php
require_once ('jpgraph/src/jpgraph.php');
require_once ('jpgraph/src/jpgraph_line.php');

$ydata = [12, 15, 22, 19, 26];
$graph = new Graph(350, 250);
$graph->SetScale("textlin");
$graph->title->Set('Monthly Sales');

$line = new LinePlot($ydata);
$graph->Add($line);

$graph->Stroke();
?>

集成 JavaScript 图表库

通过 PHP 输出数据给前端 JavaScript 图表库(如 Chart.js):

<?php
$data = [
    'labels' => ['January', 'February', 'March', 'April', 'May'],
    'datasets' => [[
        'label' => 'Sales',
        'data' => [65, 59, 80, 81, 56],
        'backgroundColor' => 'rgba(75, 192, 192, 0.2)',
        'borderColor' => 'rgba(75, 192, 192, 1)'
    ]]
];
?>

<canvas id="myChart"></canvas>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script>
    var ctx = document.getElementById('myChart').getContext('2d');
    var chart = new Chart(ctx, {
        type: 'bar',
        data: <?php echo json_encode($data); ?>,
        options: { responsive: true }
    });
</script>

使用 Google Charts API

PHP 准备数据,通过 Google Charts 显示:

php实现图表统计

<?php
$chartData = [
    ['Month', 'Sales'],
    ['Jan', 1000],
    ['Feb', 1170],
    ['Mar', 660]
];
$jsonData = json_encode($chartData);
?>

<div id="piechart" style="width: 500px; height: 300px;"></div>
<script src="https://www.gstatic.com/charts/loader.js"></script>
<script>
    google.charts.load('current', {'packages':['corechart']});
    google.charts.setOnLoadCallback(drawChart);

    function drawChart() {
        var data = google.visualization.arrayToDataTable(<?php echo $jsonData; ?>);
        var chart = new google.visualization.PieChart(document.getElementById('piechart'));
        chart.draw(data);
    }
</script>

数据库数据可视化

从 MySQL 数据库获取数据生成图表:

<?php
$conn = new mysqli("localhost", "user", "password", "database");
$result = $conn->query("SELECT product, sales FROM sales_data");

$chartData = [];
while ($row = $result->fetch_assoc()) {
    $chartData[] = [$row['product'], (int)$row['sales']];
}

array_unshift($chartData, ['Product', 'Sales']);
?>

使用 SVG 创建矢量图表

PHP 生成 SVG 格式的图表:

<?php
header('Content-Type: image/svg+xml');
$data = [30, 70, 50, 90];
$width = 300;
$height = 200;
$max = max($data);

echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<svg width="'.$width.'" height="'.$height.'" viewBox="0 0 '.$width.' '.$height.'">';
echo '<rect width="100%" height="100%" fill="#f8f9fa"/>';

foreach ($data as $i => $value) {
    $barHeight = ($value / $max) * ($height - 20);
    $x = $i * 60 + 20;
    $y = $height - $barHeight;
    echo '<rect x="'.$x.'" y="'.$y.'" width="40" height="'.$barHeight.'" fill="#007bff"/>';
}

echo '</svg>';
?>

选择合适的方法取决于项目需求、图表复杂度和性能要求。简单的静态图表可使用 GD 库或 SVG,复杂交互式图表推荐结合前端库实现。

标签: 图表php
分享给朋友:

相关文章

php实现验证码

php实现验证码

PHP实现验证码的方法 使用GD库生成验证码 GD库是PHP中处理图像的扩展,可用于生成验证码图片。 <?php session_start(); $width = 120; $height…

php 实现队列

php 实现队列

PHP 实现队列的方法 PHP 可以通过多种方式实现队列功能,以下是几种常见的实现方法: 使用数组实现队列 PHP 数组可以通过 array_push 和 array_shift 函数模拟队列的先进…

php 实现mvc

php 实现mvc

PHP 实现 MVC 架构的方法 MVC(Model-View-Controller)是一种常见的软件设计模式,用于分离业务逻辑、用户界面和用户输入。以下是 PHP 实现 MVC 架构的关键步骤:…

php 购物车实现session

php 购物车实现session

PHP 购物车实现(基于 Session) 在 PHP 中,使用 Session 实现购物车功能是一种常见方法。Session 可以跨页面存储用户数据,适合临时保存购物车信息。 初始化 Sessio…

php 实现锁

php 实现锁

PHP 实现锁的常见方法 文件锁(flock) 利用 flock 函数对文件进行独占锁定,适用于单机环境。 $fp = fopen("lockfile.lock", "w+"); if (flock…

php实现秒杀

php实现秒杀

PHP实现秒杀功能的关键技术 秒杀系统需要解决高并发、数据一致性、系统稳定性等问题。以下是PHP实现秒杀功能的核心技术方案: 数据库优化 使用InnoDB引擎的行级锁和事务特性,确保数据一致性。商品…