highcharts PHP中使用

Posted 认真生活、快乐工作 - 马云

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了highcharts PHP中使用相关的知识,希望对你有一定的参考价值。

官网

https://www.hcharts.cn/demo/highcharts

html

<div id="container" style="min-width:400px;height:400px"></div>

js

Highcharts.chart(\'container\', {
	chart: {
		plotBackgroundColor: null,
		plotBorderWidth: null,
		plotShadow: false,
		type: \'pie\'
	},
	title: {
		text: \'2018年1月浏览器市场份额\'
	},
	tooltip: {
		pointFormat: \'{series.name}: <b>{point.percentage:.1f}%</b>\'
	},
	plotOptions: {
		pie: {
			allowPointSelect: true,
			cursor: \'pointer\',
			dataLabels: {
				enabled: true,
				format: \'<b>{point.name}</b>: {point.percentage:.1f} %\',
				style: {
					color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || \'black\'
				}
			}
		}
	},
	series: [{
		name: \'Brands\',
		colorByPoint: true,
		data: [{
			name: \'Chrome\',
			y: 61.41,
			sliced: true,
			selected: true
		}, {
			name: \'Internet Explorer\',
			y: 11.84
		}, {
			name: \'Firefox\',
			y: 10.85
		}, {
			name: \'Edge\',
			y: 4.67
		}, {
			name: \'Safari\',
			y: 4.18
		}, {
			name: \'Sogou Explorer\',
			y: 1.64
		}, {
			name: \'Opera\',
			y: 1.6
		}, {
			name: \'QQ\',
			y: 1.2
		}, {
			name: \'Other\',
			y: 2.61
		}]
	}]
});

这里的数据通常都是从数据库查询处理出来的。
而它的格式是json的格式。
所以通过ajax获取比较方便一些。

public function get_series_data() {
        if ($date = $_POST[\'date\']) {
            $sql = \'select count(*) as count ,appid from tf_bag_lucky_log where is_receive=1 and add_time > \'.strtotime($date." 00:00").\' and add_time < \'.strtotime($date ." 23:59").\' group by appid order by count desc\';
        } else {
            $sql = \'select count(*) as count ,appid from tf_bag_lucky_log where is_receive=1 group by appid order by count desc\';
        }
        // 统计
        $data_list = Db::query($sql);
        $series_data = [];
        foreach ($data_list as $k=>&$v) {
            $xcx_info = Db::name(\'xcx\')->where(\'appid\',$v[\'appid\'])->find();
            if ($k == 0) {
                $series_data[$k] = [
                    \'name\' => $xcx_info[\'name\'],
                    \'y\' => $v[\'count\'],
                    \'sliced\' => true,
                    \'selected\' => true,
                ];
            } else {
                $series_data[$k] = [
                    \'name\' => $xcx_info[\'name\'],
                    \'y\' => $v[\'count\'],
                ];
            }
        }

        $this->json->setErr(0, \'操作成功\');
        $this->json->setAttr(\'data\', $series_data);
        $this->json->Send();
}

js改造

showContainer(date);
function showContainer(date) {
            $.ajax({
                url: "get_series_data",
                data: {
                    "date"          : date,
                },
                type: "POST",
                dataType: "json",
                success: function (data) {
                    Highcharts.chart(\'container\', {
                        chart: {
                            plotBackgroundColor: null,
                            plotBorderWidth: null,
                            plotShadow: false,
                            type: \'pie\'
                        },
                        title: {
                            text: \'金猪中奖来自小程序\'
                        },
                        tooltip: {
                            pointFormat: \'{series.name}: <b>{point.percentage:.1f}%</b>\'
                        },
                        plotOptions: {
                            pie: {
                                allowPointSelect: true,
                                cursor: \'pointer\',
                                dataLabels: {
                                    enabled: false
                                },
                                showInLegend: true
                            }
                        },
                        series: [{
                            name: \'占比\',
                            colorByPoint: true,
                            data: data.data,
                            // data: [{
                            //     name: \'Chrome\',
                            //     y: 1000,
                            //     sliced: true,
                            //     selected: true
                            // }, {
                            //     name: \'Internet Explorer\',
                            //     y: 11.84
                            // }, {
                            //     name: \'Firefox\',
                            //     y: 10.85
                            // }, {
                            //     name: \'Edge\',
                            //     y: 4.67
                            // }, {
                            //     name: \'Safari\',
                            //     y: 4.18
                            // }, {
                            //     name: \'Other\',
                            //     y: 7.05
                            // }]
                        }],
                    });
                },
                error: function () {
                    alert("网络错误");
                }
});

highcharts 非常灵活,非常方便。ajax,json获取数据,效果刚刚的。

以上是关于highcharts PHP中使用的主要内容,如果未能解决你的问题,请参考以下文章

设置Highcharts头标签时无法在JS脚本中获取PHP变量[关闭]

使用 JSON 将数据从 PHP 数组传递到 Highcharts 图表

来自 php mysql 的 Highcharts 钻取 json

highcharts PHP中使用

如何在php中使用highcharts插件实现柱状图效果 求源码

highcharts中用<%=%>获得一个数组,如何将该数组赋给data呀?????