php柱状图怎么做
时间 : 2023-03-25 08:09:01声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

在PHP中制作柱状图可以使用各种图表库来实现,如Google Charts、Highcharts、Chart.js等。这里我们以使用Google Charts为例来进行介绍。

Google Charts是一个免费的数据可视化工具,由Google开发和维护,能够帮助开发者快速创建各种类型的图表,包括柱状图、折线图、散点图等。它提供了多种接口,可以通过JavaScript或php语言调用。

首先,我们需要准备好要展示的数据。假设我们有一个数组,每个元素都包含一个名字和一个数值:

```php

$data = array(

array('London', 8136000),

array('New York', 8538000),

array('Paris', 2244000),

array('Berlin', 3470000),

array('Tokyo', 13969250)

);

下一步,我们需要将数据转换为Google Charts所需的格式。Google Charts接受JSON格式的数据,所以我们需要构建一个JSON字符串。我们可以使用PHP的json_encode函数将数组转换为JSON字符串:

```php

$jsonData = json_encode($data);

接下来,我们需要准备一个HTML页面,用于显示柱状图。在HTML页面中,我们需要引入Google Charts的JavaScript库和用于绘制柱状图的代码。代码如下:



    
    


    

在上述代码中,我们首先引入了Google Charts的JavaScript库,然后使用google.charts.load('current', {'packages':['corechart']})函数加载了所需的核心库。接着,我们定义了一个函数 drawChart(),该函数用于绘制柱状图。我们首先创建一个 DataTable 对象,并定义了两个列,分别命名为 City 和 Population。接着,我们通过 addRows() 将数据添加到 DataTable 对象中。然后,我们定义了一个 options 对象,该对象用于设置柱状图的标题、宽度和高度等参数。最后,我们创建一个 ColumnChart 对象,并通过 chart.draw() 函数将数据和选项传递给该对象,使其生成柱状图。

最后,将文件保存为PHP文件,并将数据和HTML代码放在其中,即可在网页上看到生成的柱状图。

在 PHP 中,我们可以使用 GD 库来创建动态柱状图。GD 库是开源的图形库,可以用来生成动态的图像,如 PNG、JPEG 和 GIF。

以下是创建动态柱状图的步骤:

1.设置画布大小和背景颜色。

使用 imagecreatetruecolor() 函数来创建画布,该函数的参数是宽度和高度的值,因此我们需要计算出图像的宽度和高度,以确保图像包含所有柱子和标签。

```php

$width = 400;

$height = 300;

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

$background_color = imagecolorallocate($im, 255, 255, 255);

imagefill($im, 0, 0, $background_color);

2.创建柱状图。

对于每个数据点,我们需要绘制一个矩形,在矩形之上添加标签。在计算矩形高度时,我们可以将最大数据点的值映射到画布高度。使用 imagefilledrectangle() 函数来绘制矩形,并使用 imagestring() 函数在矩形上添加标签。

```php

$data = array(50, 80, 120, 160, 200);

$max_value = max($data);

$bar_width = 40;

$padding = 10;

$x = $padding;

$y = $height - $padding;

foreach ($data as $value) {

$bar_height = intval(($value / $max_value) * ($height - 2 * $padding));

$bar_color = imagecolorallocate($im, rand(0, 255), rand(0, 255), rand(0, 255));

imagefilledrectangle($im, $x, $y - $bar_height, $x + $bar_width, $y, $bar_color);

imagestring($im, 4, $x + ($bar_width / 2) - 10, $y - $bar_height - 20, $value, $bar_color);

$x += $bar_width + $padding;

}

3.输出图像。

使用 imagepng() 函数来输出 PNG 格式的图像。可以将该函数的参数设置为文件路径,以将图像保存到磁盘上。

```php

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

imagepng($im);

imagedestroy($im);

完整代码示例:

```php

$width = 400;

$height = 300;

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

$background_color = imagecolorallocate($im, 255, 255, 255);

imagefill($im, 0, 0, $background_color);

$data = array(50, 80, 120, 160, 200);

$max_value = max($data);

$bar_width = 40;

$padding = 10;

$x = $padding;

$y = $height - $padding;

foreach ($data as $value) {

$bar_height = intval(($value / $max_value) * ($height - 2 * $padding));

$bar_color = imagecolorallocate($im, rand(0, 255), rand(0, 255), rand(0, 255));

imagefilledrectangle($im, $x, $y - $bar_height, $x + $bar_width, $y, $bar_color);

imagestring($im, 4, $x + ($bar_width / 2) - 10, $y - $bar_height - 20, $value, $bar_color);

$x += $bar_width + $padding;

}

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

imagepng($im);

imagedestroy($im);

这个例子会创建一个 400 x 300 的柱状图。数据点如下:

50, 80, 120, 160, 200

你也可以根据需求调整宽度和高度的值,以及调整数据通道,并设置不同的颜色和标签字体大小来创建不同类型的柱状图。