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 相关文章推荐
Jquery 设置标题的自动翻转
Oct 03 Javascript
常见表单重复提交问题整理及解决方法
Nov 13 Javascript
jquery动画效果学习笔记(8种效果)
Nov 13 Javascript
jQuery获取浏览器类型和版本号的方法
Jul 05 Javascript
概述jQuery的元素筛选
Nov 23 Javascript
BootStrap Datetimepicker 汉化的实现代码
Feb 10 Javascript
javascript编写简易计算器
May 06 Javascript
详解webpack分离css单独打包
Jun 21 Javascript
javascript 通过键名获取键盘的keyCode方法
Dec 31 Javascript
实现elementUI表单的全局验证的方法步骤
Apr 29 Javascript
Vue 设置axios请求格式为form-data的操作步骤
Oct 29 Javascript
js动态生成表格(节点操作)
Jan 12 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+dbfile开发小型留言本
2006/10/09 PHP
WIN98下Apache1.3.14+PHP4.0.4的安装
2006/10/09 PHP
php面象对象数据库操作类实例
2014/12/02 PHP
PHP获取指定月份第一天和最后一天的方法
2015/07/18 PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
2019/05/13 PHP
Underscore.js 的模板功能介绍与应用
2012/12/24 Javascript
一个封装js代码-----展开收起效果示例
2013/07/03 Javascript
jQuery 取值、赋值的基本方法整理
2014/03/31 Javascript
纯js实现仿QQ邮箱弹出确认框
2015/04/29 Javascript
js控制元素显示在屏幕固定位置及监听屏幕高度变化的方法
2015/08/11 Javascript
JavaScript高级教程5.6之基本包装类型(详细)
2015/11/23 Javascript
实现React单页应用的方法详解
2016/08/02 Javascript
JS中BOM相关知识点总结(必看篇)
2016/11/22 Javascript
Angular的$http与$location
2016/12/26 Javascript
详解Angular中的自定义服务Service、Provider以及Factory
2017/04/22 Javascript
Vue2.0子同级组件之间数据交互方法
2018/02/28 Javascript
js经验分享 JavaScript反调试技巧
2018/03/10 Javascript
vue实现a标签点击高亮方法
2018/03/17 Javascript
Vue实现本地购物车功能
2018/12/05 Javascript
详解实现一个通用的“划词高亮”在线笔记功能
2019/04/23 Javascript
Vue中import from的来源及省略后缀与加载文件夹问题
2020/02/09 Javascript
python 爬取马蜂窝景点翻页文字评论的实现
2020/01/20 Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
2020/06/10 Python
Python使用Pygame绘制时钟
2020/11/29 Python
解决pytorch 的state_dict()拷贝问题
2021/03/03 Python
基于HTML5 的人脸识别活体认证的实现方法
2016/06/22 HTML / CSS
加拿大知名的国际儿童品牌:Hatley
2016/11/09 全球购物
美国知名的家庭连锁百货商店:Boscov’s
2017/07/27 全球购物
外贸业务员求职信范文
2013/12/12 职场文书
小学领导班子对照材料
2014/08/23 职场文书
2014年团支书工作总结
2014/11/14 职场文书
工作违纪检讨书范文
2015/01/26 职场文书
2015年爱国卫生月活动总结
2015/03/26 职场文书
装修安全责任协议书
2016/03/22 职场文书
忆童年!用Python实现愤怒的小鸟游戏
2021/06/07 Python
Python&Matlab实现樱花的绘制
2022/04/07 Python