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高级程序设计》阅读笔记(三) ECMAScript中的引用类型
Feb 27 Javascript
jQuery之自动完成组件的深入解析
Jun 19 Javascript
jquery插件lazyload.js延迟加载图片的使用方法
Feb 19 Javascript
jQuery对指定元素中指定字符串进行替换的方法
Mar 17 Javascript
JS实现简洁、全兼容的拖动层实例
May 13 Javascript
13个PHP函数超实用
Oct 21 Javascript
AngualrJS中的Directive制作一个菜单
Jan 26 Javascript
JavaScript仿聊天室聊天记录
Dec 27 Javascript
详解Vue源码学习之callHook钩子函数
Jul 25 Javascript
微信小程序按钮去除边框线分享页面功能
Aug 27 Javascript
JavaScript单线程和任务队列原理解析
Feb 04 Javascript
Vue 使用iframe引用html页面实现vue和html页面方法的调用操作
Nov 16 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中读取和写入WORD文档的代码
2008/04/09 PHP
php的一个简单加密解密代码
2014/01/14 PHP
php中magic_quotes_gpc对unserialize的影响分析
2014/12/16 PHP
php去除头尾空格的2种方法
2015/03/16 PHP
php array_keys 返回数组的键名
2016/10/25 PHP
php中str_pad()函数用法分析
2017/03/28 PHP
也说JavaScript中String类的replace函数
2011/09/22 Javascript
Egret引擎开发指南之创建项目
2014/09/03 Javascript
javascript中Date format(js日期格式化)方法小结
2015/12/17 Javascript
JavaScript模拟push
2016/03/06 Javascript
jquery 实时监听输入框值变化的完美方法(必看)
2017/01/26 Javascript
Javascript面试经典套路reduce函数查重
2017/03/23 Javascript
JavaScript基本语法_动力节点Java学院整理
2017/06/26 Javascript
node使用UEditor富文本编辑器的方法实例
2017/07/11 Javascript
js字符限制(字符截取) 一个中文汉字算两个字符
2017/09/12 Javascript
基于vue实现网站前台的权限管理(前后端分离实践)
2018/01/13 Javascript
JavaScript引用类型Date常见用法实例分析
2018/08/08 Javascript
详解angular2如何手动点击特定元素上的点击事件
2018/10/16 Javascript
react中使用css的7中方式(最全总结)
2019/02/11 Javascript
解析vue、angular深度作用选择器
2019/09/11 Javascript
vue引入静态js文件的方法
2020/06/20 Javascript
利用Python实现图书超期提醒
2016/08/02 Python
python字典操作实例详解
2017/11/16 Python
Python结合ImageMagick实现多张图片合并为一个pdf文件的方法
2018/04/24 Python
Python实现繁体中文与简体中文相互转换的方法示例
2018/12/18 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
2019/01/17 Python
意大利奢侈品牌在线精品店:Jole.it
2020/11/23 全球购物
幼师自我鉴定范文
2013/10/01 职场文书
餐饮加盟计划书
2014/01/10 职场文书
2014年学习雷锋活动总结
2014/03/01 职场文书
社会学专业求职信
2014/07/17 职场文书
员工年终考核评语
2014/12/31 职场文书
代理词怎么写
2015/05/25 职场文书
2015年防灾减灾工作总结
2015/07/24 职场文书
《狼牙山五壮士》读后感:宁死不屈,视死如归
2019/08/16 职场文书
导游词之镇江焦山
2019/11/21 职场文书