php 生成饼状图,折线图,条形图 通用类 2

生成饼状图,折线图,条形图通用的php类,这里使用的是国外的 HighCharts,前台页面别忘了调用HighCahrt  js

HighCharts中文网站  http://www.hcharts.cn/index.php

<?php
/**
 * Created by PhpStorm.
 * User: WANG
 * Date: 2015/7/26
 * Time: 11:19
 */
namespace Org\Wechat;
class HighCharts
{
    /**
     * 获得js生成图表的报表
     * @param $id  dom元素id
     * @param array $data 图表数据
     * @param $type   图表类型    线形图:line      饼图:pie      条形图:column
     * @param string $title 图表主标题
     * @param string $subtitle 副标题
     * @return string
     */
    public function  getHighCharts($id, array $data, $type, $title = ‘‘, $subtitle = ‘‘, $yTitle = ‘‘)
    {
        $series = ‘‘;
        if (empty($data)) {
            $data = array(
                ‘categories‘ => array(
                    ‘data‘ => array(‘-‘)
                ),
                ‘xaxis‘ => array(
                    ‘type‘ => ‘category‘,
                    ‘boundaryGap‘ => ‘false‘,
                    ‘data‘ => array(‘‘)
                ),
                ‘series‘ => array(
                    array(
                        ‘name‘ => ‘-‘,
                        ‘type‘ => ‘line‘,
                        ‘itemStyle‘ => "{normal: {areaStyle: {type: ‘default‘}}}",
                        ‘data‘ => array()
                    ),
                )
            );
        }
        foreach ($data as $key => $value) {
            switch ($key) {
                case ‘categories‘:
                    $categories = ‘[‘;
                    foreach ($value as $k => $v) {
                        // categories: [‘Jan‘, ‘Feb‘, ‘Mar‘, ‘Apr‘, ‘May‘, ‘Jun‘,‘Jul‘, ‘Aug‘, ‘Sep‘, ‘Oct‘, ‘Nov‘, ‘Dec‘]
                        $categories = $categories . json_encode($v, JSON_UNESCAPED_UNICODE) . ‘,‘;
                    }
                    $categories = $categories . ‘]‘;
                    break;
                case ‘xaxis‘:
                    foreach ($value as $k => $v) {
                        switch ($k) {
                            case ‘type‘:
                                $xaxis[] = $k . ":‘" . $v . "‘";
                                break;
                            case ‘data‘:
                                $xaxis[] = $k . ‘:‘ . json_encode($v, JSON_UNESCAPED_UNICODE);
                                break;
                        }
                    }
                    $xaxis = ‘{‘ . implode(‘, ‘, $xaxis) . ‘}‘;
                    break;
                //{  name: ‘Tokyo‘,    data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6 ]}
                case ‘series‘:
                    foreach ($value as $list) {
                        $tmp = array();
                        foreach ($list as $k => $v) {
                            switch ($k) {
                                case ‘name‘:
                                case ‘type‘:
                                    $tmp[] = $k . ":‘" . $v . "‘";
                                    break;
                                case ‘itemStyle‘:
                                    $tmp[] = $k . ‘:‘ . $v;
                                    break;
                                case ‘data‘:
                                    $tmp[] = $k . ‘:‘ . json_encode($v, JSON_UNESCAPED_UNICODE);
                            }
                        }
                        $series[] = ‘{‘ . implode(‘, ‘, $tmp) . ‘}‘;
                    }
                    $series = implode(‘, ‘, $series);
                    break;
            }
        }
        if ($type !== ‘pie‘) {
            $str = "xAxis:{categories:$categories},";
        } else {
            $str = ‘‘;
        }

        $script = <<<EOT
<script type="text/javascript">
  $(function () {
    $(‘#$id‘).highcharts({
        title: {
            text: ‘$title‘,
            x: -20 //center
        },
        subtitle: {
            text: ‘$subtitle‘,
            x: -20
        },
        credits: {
                 enabled: false
         },
         $str
    yAxis: {
       title: {
        text: ‘$yTitle‘
            },
         plotLines: [{
        value: 0,
                width: 1,
                color: ‘#808080‘
            }]
        },
        tooltip: {
            valueSuffix: ‘%‘
        },
        legend: {
            layout: ‘vertical‘,
            align: ‘right‘,
            verticalAlign: ‘middle‘,
            borderWidth: 0
        },
        series: [$series]
    });
});
</script>
EOT;
        return $script;
    }
}
时间: 2024-10-26 01:29:39

php 生成饼状图,折线图,条形图 通用类 2的相关文章

JfreeChart在EXCEL中生成饼状图/柱状图/折线图

Maven <dependency> <groupId>jfree</groupId> <artifactId>jfreechart</artifactId> <version>1.0.13</version> </dependency> Java import org.apache.poi.ss.usermodel.Drawing; import org.apache.poi.ss.usermodel.She

JFreeChart框架中生成饼状图上怎样显示数据 [问题点数:40分,结帖人GreenLawn]

我用JFreeChart框架生成饼状图,但想把数据信息在饼图上显示,是在饼图内部(即圆内)显示!怎样实现啊?? 去掉lablepieplot.setLabelGenerator(null);去掉线pieplot.setLabelLinksVisible(false); 饼图标签显示百分比方法PiePlot pp = (PiePlot)chart.getPlot();pp.setLabelGenerator(new StandardPieSectionLabelGenerator("{2}&quo

Extjs 4 生成饼状图实例

前台: //远程读取设备去向图表数据 var Store1 = new Ext.data.Store({ <span style="white-space:pre"> </span>proxy:{ <span style="white-space:pre"> </span>type:'ajax', <span style="white-space:pre"> </span>u

highcharts 动态生成x轴和折线图

highchart 动态生成x轴和折线图 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"><link rel="icon" href="https://static.jianshukeji.com/highcharts/images/favicon.ico"> <meta name="viewport" c

Echarts生成饼状图、条形图以及线形图 JS封装

1.在我们开发程序中,经常会用到生成一些报表,比方说饼状图,条形图,折线图等.不多说了,直接上封装好的代码,如下Echarts.js所示 以下代码是封装在Echarts.js文件中 /** * Created by Administrator on 2015/8/7. */ var charec; // 路径配置 require.config({ paths: { echarts: 'http://echarts.baidu.com/build/dist' } }); // 按需加载所需图表 r

PHP实现动态生成饼状图、柱状图和折线图(转载)

PHP在图像操作方面的表现非常出色,我们只需借助可以免费得到的GD库便可以轻松实现图.表勾画.下面将分别介绍PHP实现的饼状图.折线图和柱状图以 及他们的使用方法,这几段代码的特点就是不需要再把它们复制到你的代码之中,只需要把计算得到的数据作为参数传入,即可得到相应的图形效果 代码中所有使用的函数的说明,请参见php开发文档 饼状图 设计思路 饼状图表对于查看一个值占总值的百分比是一个好的方法.我们就用PHP来实现一个饼形图表. 它的设计思想是: 1 接受参数,得到所有数值的和,得到每一个值占数

PHP实现动态生成饼状图 (转载)

<?php //变量定义,画椭圆弧时的角度大小 define("ANGLELENGTH", 10); /** * 绘制图片 * @param $title 3D图的标题 * @param $dataArr 显示的数据数组 * @param $labelArr 对应数据的标签分类数组 * @param $colorArr 对应绘图颜色的数组 * @param $a 画布的基准宽度 * @param $b 画布的基准高度 * @param $v 3D柱的高度 * @param $fo

WinForm Chart控件使用记录(由于制作饼装,柱状,折线图)

由于公司的winform项目需要用到Chart图表,抽空研究了一下,特地发上来给大家做个参考,就目前而言用到的属性说明都做了注释: 主要用到Chart控件图表区域的属性有五个属性 Annotations 批注集合(我没怎么用到,但是配置的话会在图标区域出现一些可以备注的东西吧) ChartAreas 图表区属性:主要设置图标数据的背景,比如3D或者隐藏还是显示横纵轴交叉线,分块颜色显示等 Lengends 图表图例集合 主要设置图表边说明的一些东西,这次项目没什么用到,但是觉得这个基本没啥用,有

Extjs 4 生成饼状图的例子

前台: //远程抄表设备下落图表数据 var Store1 = new Ext.data.Store({ <span style="white-space:pre"> </span>proxy:{ <span style="white-space:pre"> </span>type:'ajax', <span style="white-space:pre"> </span>u