怎么用php实现柱状图
时间 : 2023-04-25 14:33:01声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

在PHP中,可以使用各种方法和库来实现柱状图。以下是使用PHP GD库创建柱状图的基本步骤:

1. 创建一个基本的图片对象。

$image = imagecreatetruecolor($width, $height);

其中,$width和$height指定了图片的宽度和高度。

2. 定义颜色。

$white = imagecolorallocate($image, 255, 255, 255);

$black = imagecolorallocate($image, 0, 0, 0);

$gray = imagecolorallocate($image, 128, 128, 128);

这里,我们定义了白色,黑色和灰色三种颜色。

3. 绘制图片背景。

imagefilledrectangle($image, 0, 0, $width - 1, $height - 1, $white);

这里,我们使用白色填充整个图片。

4. 绘制柱状图。

首先,我们需要定义数据。举例而言,我们要绘制以下数值的柱状图:

| 数据 | 高度 |

| ---- | ---- |

| 10 | 100 |

| 20 | 200 |

| 30 | 300 |

| 40 | 400 |

| 50 | 500 |

$barWidth = 40; // 柱状图宽度

$space = 20; // 柱状图间距

$padding = 10; // 边框边距

$maxValue = 500; // 最大值

$values = array(100, 200, 300, 400, 500);

$count = count($values);

for ($i = 0; $i < $count; $i++) {

$x1 = $i * ($barWidth + $space) + $padding;

$y1 = $height - $padding;

$x2 = $x1 + $barWidth;

$y2 = $height - $padding - ($values[$i] / $maxValue * ($height - $padding * 2));

imagefilledrectangle($image, $x1, $y1, $x2, $y2, $black);

}

这里,我们定义了柱状图的宽度、间距和边距,并计算出了每个柱状图的坐标。然后,使用黑色绘制每个柱状图。

5. 绘制标签。

$font = 5; // 字体大小

$labelPadding = 5; // 标签间距

$labels = array('10', '20', '30', '40', '50');

for ($i = 0; $i < $count; $i++) {

$x = $i * ($barWidth + $space) + $barWidth / 2 + $padding;

$y = $height - $padding + $labelPadding + $font;

imagestring($image, $font, $x, $y, $labels[$i], $black);

}

这里,我们定义了字体大小和标签间距,并计算出了每个标签的坐标。然后,使用黑色绘制每个标签。

6. 输出图片。

最后,我们可以通过如下方法将图片输出到浏览器:

header('Content-Type: image/png');

imagepng($image);

完整代码:

$width = 600;

$height = 400;

$image = imagecreatetruecolor($width, $height);

$white = imagecolorallocate($image, 255, 255, 255);

$black = imagecolorallocate($image, 0, 0, 0);

$gray = imagecolorallocate($image, 128, 128, 128);

imagefilledrectangle($image, 0, 0, $width - 1, $height - 1, $white);

$barWidth = 40;

$space = 20;

$padding = 10;

$maxValue = 500;

$values = array(100, 200, 300, 400, 500);

$count = count($values);

for ($i = 0; $i < $count; $i++) {

$x1 = $i * ($barWidth + $space) + $padding;

$y1 = $height - $padding;

$x2 = $x1 + $barWidth;

$y2 = $height - $padding - ($values[$i] / $maxValue * ($height - $padding * 2));

imagefilledrectangle($image, $x1, $y1, $x2, $y2, $black);

}

$font = 5;

$labelPadding = 5;

$labels = array('10', '20', '30', '40', '50');

for ($i = 0; $i < $count; $i++) {

$x = $i * ($barWidth + $space) + $barWidth / 2 + $padding;

$y = $height - $padding + $labelPadding + $font;

imagestring($image, $font, $x, $y, $labels[$i], $black);

}

header('Content-Type: image/png');

imagepng($image);

运行代码后,将会输出以下柱状图:

| |

| |

| |

| |

| | *****

| | *****

| | ***** | *****

| ***** | ****** | ******

| ******* | ***** ******* |************

********** ****************** *******************************

10 20 30 40 50

使用 PHP 实现柱状图通常可以借助于一些图表库,其中比较流行的是 Google Charts 和 Highcharts。

Google Charts 是 Google 提供的一个免费的图表库,支持生成多种类型的图表,包括柱状图。具体实现步骤如下:

1.在 HTML 页面中引入 Google Charts 的 JS 库

2.准备数据

```php

$rows = array(

array('City', 'Population'),

array('New York City, NY', 8623000),

array('Los Angeles, CA', 3999759),

array('Chicago, IL', 2715000),

array('Houston, TX', 2325502),

array('Philadelphia, PA', 1567872)

);

3.通过 PHP 生成 JavaScript 代码

```php

<?php

// 将数据转换成 JSON 字符串

$jsonTable = json_encode($rows);

// 生成 JavaScript 代码

echo <<<EOF

<script type="text/javascript">

google.charts.load('current', {'packages':['corechart']});

google.charts.setOnLoadCallback(drawChart);

function drawChart() {

var data = new google.visualization.arrayToDataTable($jsonTable);

var options = {

title: 'Most Populous Cities in the United States',

width: 600,

height: 400,

legend: { position: 'none' },

chartArea: { width: '50%' }

};

var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));

chart.draw(data, options);

}

</script>

EOF;

?>

4.在 HTML 页面中添加一个用于显示图表的元素

Highcharts 是一个功能强大、易于使用的 JavaScript 图表库,支持生成多种类型的图表。具体实现步骤如下:

1.在 HTML 页面中引入 Highcharts 的 JS 库

2.准备数据

```php

$data = array(

array(

'name' => 'Tokyo',

'data' => array(13.3, 21.1, 25.0, 26.6, 23.3, 18.3, 13.9, 20.6, 22.6, 19.5, 14.5, 10.6)

),

array(

'name' => 'New York',

'data' => array(-1.7, 0.6, 3.5, 8.4, 13.5, 18.2, 21.5, 20.7, 16.8, 10.6, 4.8, -0.5)

)

);

3.通过 PHP 生成 JavaScript 代码

```php

<?php

// 将数据转换成 JSON 字符串

$jsonData = json_encode($data);

// 生成 JavaScript 代码

echo <<<EOF

<script>

Highcharts.chart('container', {

chart: {

type: 'column'

},

title: {

text: 'Monthly Average Temperature'

},

xAxis: {

categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',

'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']

},

yAxis: {

title: {

text: 'Temperature (°C)'

}

},

series: $jsonData

});

</script>

EOF;

?>

4.在 HTML 页面中添加一个用于显示图表的元素

以上就是使用 PHP 实现柱状图的基本步骤,具体实现还需要根据不同的需求进行调整和扩展。