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 图中当所占百分比为 0 时不显示0%
		解决办法其实很简单,将enabled属性改为false即可: dataLabels: { enabled: false } 完成之后的显示如下 
- Highcharts 总结
		一.Highcharts series属性 1.下面是一个基本曲线图的例子: <html> <head> <meta charset="UTF-8" ... 
- highchart 中数据千分位显示为空格而不是逗号的解决方案
		thousandsSep: String 一千的分隔符 在highcharts.js 中找到 thousandsSep位置,把"" 改为 "," 
- highcharts 时间少8小时问题
		Highcharts 中默认开启了UTC(世界标准时间),由于中国所在时区为+8,所以经过 Highcharts 的处理后会减去8个小时. 如果不想使用 UTC,有2种方法可供使用: 1.在使用Hig ... 
- 【HighCharts系列教程】三、图表属性——chart
		一.chart属性说明 Chart是HighCharts图表中主要属性,包括了图表区域的颜色.线条.高度.宽度.对齐.图表类型等诸多属性,也是HighCharts图表中必须配置的属性之一. 配置cha ... 
- 基于ssh框架的highcharts前后台数据交互实例
		Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表,并且免费提供给个人学习.个人网站和非商业用途使用.HighCh ... 
- 网页图表Highcharts实践教程之图表代码构成
		网页图表Highcharts实践教程之图表代码构成 Highcharts第一个实例 下面我们来实现本书的第一个Highcharts实例. [实例1-1]下面来制作北京连续一周最高温度折线图.操作过程如 ... 
- highCharts使用记录
		公司的架构师让我做一个mockup,要用到highCharts,,以前想接触的,没时间学习,也没有用过,正好工作可以用上了,可以边学边做了. 环境 <script src="./js/ ... 
- Highcharts 使用总结
		一.Highcharts series属性 1.下面是一个基本曲线图的例子: <html> <head> <meta charset="UTF-8" ... 
随机推荐
- [LeetCode] 549. Binary Tree Longest Consecutive Sequence II_ Medium  tag: DFS recursive
			Given a binary tree, you need to find the length of Longest Consecutive Path in Binary Tree. Especia ... 
- 在ASP.NET Web Application中通过SOAP协议调用Bing搜索服务
			本文介绍了如何在ASP.NET Web Application中将Bing搜索作为Web Service来使用,并通过HTTP的SOAP协议在ASP.NET Web Application中调用Bin ... 
- Quick Look at the Air Jordan 32
			A color with 25 years of history in the Air Jordan line will once again leave its mark on the Air Jo ... 
- linux 启动引导流程
			课程大纲: Linux引导流程 Linux运行级别 Linux启动服务管理 GRUB配置与应用 启动故障分析与解决 系统引导流程 1.固件firmware(CMOS(固化在硬件上的程序与硬件统称)/B ... 
- VueJS 数据驱动和依赖追踪分析
			之前关于 Vue 数据绑定原理的一点分析,最近需要回顾,就顺便发到随笔上了 在之前实现一个自己的Mvvm中,用 setter 来观测model,将界面上所有的 viewModel 绑定到 model ... 
- 绘制loss曲线
			第一步保存日志文件,用重定向即可: $TOOLS/caffe train --solver=$SOLVERFILE >& |tee out.log 第二步直接绘制: python plo ... 
- Window下PHP三种运行方式图文详解,window下的php是不是单进程的?
			Window下PHP三种运行方式图文详解,window下的php是不是单进程的? PHP运行目前为止主要有三种方式: a.以模块加载的方式运行,初学者可能不容易理解,其实就是将PHP集成到Apache ... 
- eclipse里error报错Target runtime com.genuitec.runtime.generic.jee60 is not defined.
			eclipse里error报错Target runtime com.genuitec.runtime.generic.jee60 is not defined. eclipse里error报错解决办法 ... 
- pyDay6
			内容来自廖雪峰的官方网站 1.在Python中,代码不是越多越好,而是越少越好.代码不是越复杂越好,而是越简单越好,1行代码能实现的功能,决不写5行代码.请始终牢记,代码越少,开发效率越高. 2.取指 ... 
- 基于Android的闹钟的软件
			一.本课题要求:设计一个基于Android的闹钟的软件. 实现的功能有:能通过界面设置闹钟的启动条件建立后台服务进程,当满足触发条件时,闹钟响应相应事件. 二.需求分析 该课题实现在手机操作系统And ... 
