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 相关文章推荐
(推荐一个超好的JS函数库)S.Sams Lifexperience ScriptClassLib
Apr 29 Javascript
JS延迟加载加快页面打开速度示例代码
Dec 30 Javascript
教你用jquery实现iframe自适应高度
Jun 11 Javascript
使用jquery解析XML示例代码
Sep 05 Javascript
javascript折半查找详解
Jan 26 Javascript
Jquery实现仿京东商城省市联动菜单
Nov 19 Javascript
实例剖析AngularJS框架中数据的双向绑定运用
Mar 04 Javascript
JS事件添加和移出的兼容写法示例
Jun 20 Javascript
jQuery设置聚焦并使光标位置在文字最后的实现方法
Aug 02 Javascript
解决vue 路由变化页面数据不刷新的问题
Mar 13 Javascript
Vue+Koa2 打包后进行线上部署的教程详解
Jul 31 Javascript
openlayers4实现点动态扩散
Aug 17 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简单实现图片格式转换(jpg转png,gif转png等)
2019/10/30 PHP
php使用Swoole实现毫秒级定时任务的方法
2020/09/04 PHP
js实现页面打印功能实例代码(附去页眉页脚功能代码)
2009/12/15 Javascript
JQuery.uploadify 上传文件插件的使用详解 for ASP.NET
2010/01/22 Javascript
JavaScript Event学习第九章 鼠标事件
2010/02/08 Javascript
jquery引用方法时传递参数原理分析
2014/10/13 Javascript
深入剖析JavaScript面向对象编程
2016/07/12 Javascript
引用jquery框架后出错的解决方法
2016/08/09 Javascript
js返回顶部实例分享
2016/12/21 Javascript
微信小程序实现给循环列表添加点击样式实例
2017/04/26 Javascript
JavaScript运动框架 解决防抖动问题、悬浮对联(二)
2017/05/17 Javascript
Bootstrap的aria-label和aria-labelledby属性实例详解
2018/11/02 Javascript
viewer.js一个强大的基于jQuery的图像查看插件(支持旋转、缩放)
2020/04/01 jQuery
只有 20 行的 JavaScript 模板引擎实例详解
2020/05/11 Javascript
关于python pyqt5安装失败问题的解决方法
2017/08/08 Python
python如何创建TCP服务端和客户端
2018/08/26 Python
python查找重复图片并删除(图片去重)
2019/07/16 Python
opencv-python 读取图像并转换颜色空间实例
2019/12/09 Python
Tensorflow轻松实现XOR运算的方式
2020/02/03 Python
Keras 切换后端方式(Theano和TensorFlow)
2020/06/19 Python
HTML5利用约束验证API来检查表单的输入数据的代码实例
2016/12/20 HTML / CSS
海信商城:海信电视、科龙空调、容声冰箱官方专卖
2017/02/07 全球购物
加拿大女包品牌:Matt & Nat
2017/05/12 全球购物
美国在线医疗分销商:MedEx Supply
2020/02/04 全球购物
应届毕业生应聘自荐信
2013/12/07 职场文书
生日派对邀请函
2014/01/13 职场文书
如何编写优秀的食品项目创业计划书
2014/01/23 职场文书
贷款承诺书范文
2014/05/19 职场文书
国际贸易毕业生求职信
2014/07/20 职场文书
自主招生学校推荐信
2014/09/26 职场文书
中国文明网向国旗敬礼寄语大全
2014/09/27 职场文书
公安局班子个人对照检查材料思想汇报
2014/10/09 职场文书
大学生就业推荐表自我评价
2015/03/02 职场文书
英文慰问信范文
2015/03/24 职场文书
民事撤诉申请书范本
2015/05/18 职场文书
PostgreSQL解析URL的方法
2021/08/02 PostgreSQL