官网
https://www.hcharts.cn/demo/highcharts
<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获取数据,效果刚刚的。