PHP 绘图——使用jpgraph绘图


1. 要支持中文需要用到 simhei.ttf simsun.ttc 这两个字体 , 在使用中文的时候需要使用 SetFont(FF_SIMSUN,FS_BOLD) 设置字体。
将需要的字体放入到项目目录下的src\fonts\目录里
jpgraph.php中有以下这样一段代码是设置字体文件路径的
//
// Setup path for western/latin TTF fonts
//
if (!defined('TTF_DIR')) {
    if (strstr( PHP_OS, 'WIN') ) {
        $sroot = getenv('SystemRoot');
        if( empty($sroot) ) {
            $t = new ErrMsgText();
            $msg = $t->Get(12,$file,$lineno);
            die($msg);
        }
        else {
            define('TTF_DIR', $sroot.'/fonts/');
        }
    } else {
        define('TTF_DIR','/usr/share/fonts/truetype/');
    }
2.需要注意的是:要想适用 jpgraph ,你的 PHP 必须开启了 GD2 扩展。


如果是在window下首先需要修改文件的路径

修改jpgraph_ttf.inc.php文件
$jpgraph_font_dir = dirname(__FILE__).'\\fonts\\';//修改字体的路径从原来的/fonts/ 改为 \\fonts\\
如果没修改在windows下会报下面的错误

解决中文问题:
如果你的文件编码为 utf-8,修改方法如下
方法一:
找到
        elseif( $aFF === FF_SIMSUN) {
            // Do Chinese conversion
            if( $this->g2312 == null ) {
                include_once 'jpgraph_gb2312.php' ;
                $this->g2312 = new GB2312toUTF8();
            }
            return $this->g2312->gb2utf8($aTxt);
        }
修改为
        elseif( $aFF === FF_SIMSUN) {
            // Do Chinese conversion
            /*
            if( $this->g2312 == null ) {
                include_once 'jpgraph_gb2312.php' ;
                $this->g2312 = new GB2312toUTF8();
            }
            return $this->g2312->gb2utf8($aTxt);
            */
         return $aTxt;
        }
方法二:在程序中修改
$title=" 流量图 ";
$title = iconv("UTF-8", "gb2312", $title);
$graph->title->Set($title);

注:
jpgraph默认显示汉字时是把汉字编码认为gb2312,转化为utf-8以后再显示。
这样的话,如果你的文件编码是gb2312,SetFont方法的第一个参数为FF_SIMSUN即可。
如果你是utf-8编码你还需要先把汉字编码转化为gb2312,这样你的汉字才可以正常显示。


代码如下:



<?php
/**
 * 使用jpgraph生成3D饼图
 *
 */
include 'src/jpgraph.php';
include 'src/jpgraph_pie.php';
include 'src/jpgraph_pie3d.php';//引用3D饼图pieplot3D对象所在的类文件


$result = array(5,8,11,1,1,1);
$vote_content = array("张三","丽丽","lili","张三","丽丽","lili");
$title = '标题';

$graph = new PieGraph(500,245);//创建图像
$graph->SetShadow();//创建图像阴影
$graph->tabtitle->SetFont(FF_SIMSUN,FS_BOLD,14);//设置标题字体
$graph->tabtitle->Set($title);//输出标题
$graph->title->SetColor("darkblue");//定义标题颜色


$p1 = new PiePlot3D($result);//创建图像
//$p1->SetTheme("water");//控制图像的颜色
//$p1->SetCenter(0.4);//设置图像位置
//$p1->SetSize(0.4);//设置图像的大小
//$p1->SetHeight(20);//设置饼图的高度
//$p1->SetAngle(45);//设置图像的倾斜角度
//$p1->Explode(array(5,40,10,30,20));//控制饼图的分割
//$p1->value->SetFont(FF_SIMSUN,FS_BOLD,20);//设置字体
/* 注释文字 */
$p1->SetLegends($vote_content);
$graph->legend->SetFont(FF_SIMSUN,FS_BOLD);//设置注释文字字体
$graph->legend->Pos(0.05,0.3,"right","center");//控制注释文字的位置
$graph->legend->SetShadow();//边界
$graph->legend->SetLayout(LEGEND_VERT);//设置图例样式和位置

$graph->Add($p1);//添加数据
$graph->Stroke();//生成图像
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您介绍一下使用JPGraph绘制销售量柱状的步骤。 1. 安装JPGraph库 首先,您需要在PHP环境下安装JPGraph库。您可以从官方网站http://jpgraph.net/下载最新版本的JPGraph库,并将其解压缩到您的PHP项目中。 2. 创建数据源 在绘制柱状之前,您需要创建一个数据源。假设您的销售数据存储在MySQL数据库中,您可以使用以下代码从数据库中查询数据: ``` //连接数据库 $conn = mysqli_connect("localhost", "username", "password", "database"); //查询销售数据 $result = mysqli_query($conn, "SELECT month, sales FROM sales_data"); //将数据存储到数组中 $data = array(); while($row = mysqli_fetch_assoc($result)) { $data[$row['month']] = $row['sales']; } ``` 注意:在实际应用中,您需要根据自己的数据存储方式来修改上述代码。 3. 绘制柱状 接下来,您可以使用JPGraph库来绘制销售量柱状。以下是一个例子: ``` //包含JPGraph库 require_once ('jpgraph/jpgraph.php'); require_once ('jpgraph/jpgraph_bar.php'); //创建画布 $graph = new Graph(600, 400); $graph->SetScale('textlin'); //设置表标题 $graph->title->Set('Sales Data'); //创建柱状 $bar = new BarPlot(array_values($data)); //设置柱状颜色 $bar->SetFillColor('#3366CC'); //将柱状添加到画布中 $graph->Add($bar); //设置横轴标签 $graph->xaxis->SetTickLabels(array_keys($data)); //输出表 $graph->Stroke(); ``` 上述代码中,我们首先创建了一个画布,然后设置了表标题和横轴标签。接下来,我们创建了一个柱状,并将其添加到画布中。最后,我们输出表。 注意:在实际应用中,您需要根据自己的需求来修改上述代码。 希望这个简单的示例能够帮助您使用JPGraph绘制销售量柱状。如果您有任何问题,请随时询问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值