PHP+mysql+Highcharts生成饼状图


Posted in Javascript onMay 04, 2015

PHP+mysql+Highcharts生成饼状图

Mysql

首先我们建一张·chart_pie·表作为统计数据。

-- 
-- 表的结构 `chart_pie` 
-- 
 
CREATE TABLE IF NOT EXISTS `chart_pie` ( 
 `id` int(11) NOT NULL AUTO_INCREMENT, 
 `title` varchar(30) NOT NULL, 
 `pv` int(10) NOT NULL, 
 PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ; 
 
-- 
-- 转存表中的数据 `chart_pie` 
-- 
 
INSERT INTO `chart_pie` (`id`, `title`, `pv`) VALUES 
(1, '百度', 1239), 
(2, 'google', 998), 
(3, '搜搜', 342), 
(4, '必应', 421), 
(5, '搜狗', 259), 
(6, '其他', 83);

PHP

在pie.php我们要生成数据给前端调用:

$query = mysql_query("select * from chart_pie"); 
while($row = mysql_fetch_array($query)){ 
 $arr[] = array( 
  $row['title'],intval($row['pv']) 
 ); 
} 
$data = json_encode($arr);
jQuery
$(function() { 
 $('#highcharts').highcharts({ 
  chart: { 
   renderTo: 'chart_pie', 
   //饼状图关联html元素id值 
   defaultSeriesType: 'pie', 
   //默认图表类型为饼状图 
   plotBackgroundColor: '#ffc', 
   //设置图表区背景色 
   plotShadow: true //设置阴影 
  }, 
  title: { 
   text: '搜索引擎统计分析' //图表标题 
  }, 
  credits: { 
   text: '3water.com' 
  }, 
  tooltip: { 
   formatter: function() { //鼠标滑向图像提示框的格式化提示信息 
    return '<b>' + this.point.name + '</b>: ' + twoDecimal(this.percentage) + ' %'; 
   } 
  }, 
  plotOptions: { 
   pie: { 
    allowPointSelect: true, 
    //允许选中,点击选中的扇形区可以分离出来显示 
    cursor: 'pointer', 
    //当鼠标指向扇形区时变为手型(可点击) 
    //showInLegend: true, //如果要显示图例,可将该项设置为true 
    dataLabels: { 
     enabled: true, 
     //设置数据标签可见,即显示每个扇形区对应的数据 
     color: '#000000', 
     //数据显示颜色 
     connectorColor: '#999', 
     //设置数据域扇形区的连接线的颜色 
     style: { 
      fontSize: '12px' //数据显示的大小 
     }, 
     formatter: function() { //格式化数据 
      return '<b>' + this.point.name + '</b>: ' + twoDecimal(this.percentage) + ' %'; 
      //return '<b>' + this.point.name + '</b>: ' + this.y ; 
     } 
    } 
   } 
  }, 
  series: [{ //数据列 
   name: 'search engine', 
   data: data //核心数据列来源于php读取的数据并解析成JSON 
  }] 
 }); 
});

此外,格式化数据市,如果要显示百分比,可使用this.percentage,Highcharts会自动将整数转换为百分数,如果要显示数据量,直接使用this.y。
百分比代码如下:

formatter: function() { //格式化数据 
 return '<b>' + this.point.name + '</b>: ' + twoDecimal(this.percentage) + ' %'; 
}

实际数据是这样的:

formatter: function() { //格式化数据 
 return '<b>' + this.point.name + '</b>: ' + this.y ; 
}

最后我们要保留两位小数,代码贴下:

function twoDecimal(x) { //保留2位小数 
 var f_x = parseFloat(x); 
 if (isNaN(f_x)) { 
  alert('错误的参数'); 
  return false; 
 } 
 var f_x = Math.round(x * 100) / 100; 
 var s_x = f_x.toString(); 
 var pos_decimal = s_x.indexOf('.'); 
 if (pos_decimal < 0) { 
  pos_decimal = s_x.length; 
  s_x += '.'; 
 } 
 while (s_x.length <= pos_decimal + 2) { 
  s_x += '0'; 
 } 
 return s_x; 
}

柱状图、饼状图、曲线图等都是一样的。

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
JavaScript 弹出窗体点击按钮返回选择数据的实现
Apr 01 Javascript
jquery动态改变form属性提交表单
Jun 03 Javascript
JavaScript动态创建form表单并提交的实现方法
Dec 10 Javascript
Bootstrap 网站实例之单页营销网站
Oct 20 Javascript
javascript 定时器工作原理分析
Dec 03 Javascript
Bootstrap基本组件学习笔记之下拉菜单(7)
Dec 07 Javascript
Vue引入jquery实现平滑滚动到指定位置
May 09 jQuery
Vue.js 中 axios 跨域访问错误问题及解决方法
Nov 21 Javascript
微信小程序人脸识别功能代码实例
May 07 Javascript
Vue插件之滑动验证码
Sep 21 Javascript
vue-cli3配置favicon.ico和title的流程
Oct 27 Javascript
javascript中call,apply,bind的区别详解
Dec 11 Javascript
jQuery实现仿Google首页拖动效果的方法
May 04 #Javascript
js检测判断日期大于多少天的方法
May 04 #Javascript
jQuery实现表格展开与折叠的方法
May 04 #Javascript
JS数字抽奖游戏实现方法
May 04 #Javascript
JS实现跟随鼠标立体翻转图片的方法
May 04 #Javascript
js实现使用鼠标拖拽切换图片的方法
May 04 #Javascript
js实现每日自动换一张图片的方法
May 04 #Javascript
You might like
PHP中使用gettext解决国际化问题的例子(i18n)
2014/06/13 PHP
php实现将字符串按照指定距离进行分割的方法
2015/03/14 PHP
php实现的简单日志写入函数
2015/03/31 PHP
PHP使用GD库制作验证码的方法(点击验证码或看不清会刷新验证码)
2017/08/15 PHP
Laravel框架实现model层的增删改查(CURD)操作示例
2018/05/12 PHP
php json转换相关知识(小结)
2018/12/21 PHP
PHP yield关键字功能与用法分析
2019/01/03 PHP
JavaScript Prototype对象
2009/01/07 Javascript
JS文本框默认值处理详解
2013/07/10 Javascript
jQuery中removeProp()方法用法实例
2015/01/05 Javascript
基于jQuery实现文本框只能输入数字(小数、整数)
2016/01/14 Javascript
JavaScript编写的网页小游戏,很给力
2017/08/18 Javascript
关于Vue.nextTick()的正确使用方法浅析
2017/08/25 Javascript
Vue 项目代理设置的优化
2018/04/17 Javascript
Rollup处理并打包JS文件项目实例代码
2018/05/31 Javascript
vue .js绑定checkbox并获取、改变选中状态的实例
2018/08/24 Javascript
JavaScript代码调试方法实例小结
2019/01/05 Javascript
解决layui数据表格排序图标被超出的表头挤出去的问题
2019/09/19 Javascript
利用原生JS实现欢乐水果机小游戏
2020/04/23 Javascript
Vue路由切换页面不更新问题解决方案
2020/07/10 Javascript
js数组中去除重复值的几种方法
2020/08/03 Javascript
python str与repr的区别
2013/03/23 Python
Python获取远程文件大小的函数代码分享
2014/05/13 Python
python中__call__方法示例分析
2014/10/11 Python
Python实现提取文章摘要的方法
2015/04/21 Python
Python通过90行代码搭建一个音乐搜索工具
2015/07/29 Python
Python开发之快速搭建自动回复微信公众号功能
2016/04/22 Python
利用Python循环(包括while&amp;for)各种打印九九乘法表的实例
2017/11/06 Python
python openCV获取人脸部分并存储功能
2019/08/28 Python
python定间隔取点(np.linspace)的实现
2019/11/27 Python
基于python检查矩阵计算结果
2020/05/21 Python
团工委书记自荐书范文
2013/12/17 职场文书
酒店开业庆典策划方案
2014/05/28 职场文书
2014年绩效考核工作总结
2014/12/11 职场文书
2015年感恩母亲节的演讲稿
2015/03/18 职场文书
《狮子和鹿》教学反思
2016/02/16 职场文书