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: 'jb51.net'
  },
  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;
}

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

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

(0)

相关推荐

  • jQuery插件HighCharts绘制2D柱状图、折线图和饼图的组合图效果示例【附demo源码下载】

    本文实例讲述了jQuery插件HighCharts绘制2D柱状图.折线图和饼图的组合图效果.分享给大家供大家参考,具体如下: 1.实例代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>HighCharts 2D柱状图.折线图和饼图的组合图</title> <script type="text/javascript"

  • jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】

    本文实例讲述了jQuery插件HighCharts绘制的基本折线图效果.分享给大家供大家参考,具体如下: 1. 实例源码: <!DOCTYPE html> <html> <head> <title>HighCharts基本折线图</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-w

  • jQuery.Highcharts.js绘制柱状图饼状图曲线图

    在数据统计和分析业务中,有时会遇到客户需要在一个图表中将柱状图.饼状图.曲线图的都体现出来,即可以从柱状图中看出具体数据.又能从曲线图中看出变化趋势,还能从饼状图中看出各部分数据比重.Highcharts可以轻松实现三图合一的效果. 复制代码 代码如下: var chart;             $(document).ready(function() {                 chart = new Highcharts.Chart({                     c

  • Javascript highcharts 饼图显示数量和百分比实例代码

    Javascript highcharts 饼图显示数量和百分比实例代码 最近公司项目需求有这样一个功能模块,highcharts 饼图显示数量和百分比 ,由于本人刚入门,看到这个需求不会写,于是就上网搜下相关资料,觉得一篇还不错记录下. <div class="piecleft" id="chart" style="height:350px; width: 350px;"> </div> <script type=

  • jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】

    本文实例讲述了jQuery插件HighCharts实现的2D对数饼图效果.分享给大家供大家参考,具体如下: 1.实例代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>HighCharts 2D对数轴饼图</title> <script type="text/javascript" src="js/jqu

  • jQuery插件HighCharts实现的2D回归直线散点效果示例【附demo源码下载】

    本文实例讲述了jQuery插件HighCharts实现的2D回归直线散点效果.分享给大家供大家参考,具体如下: 1.实例代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>HighCharts之2D回归直线的散点</title> <script type="text/javascript" src="js

  • jQuery插件HighCharts绘制2D柱状图、折线图的组合双轴图效果示例【附demo源码下载】

    本文实例讲述了jQuery插件HighCharts绘制2D柱状图.折线图的组合双轴图效果.分享给大家供大家参考,具体如下: 1.实例代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>HighCharts 2D柱状图.折线图的组合双轴图</title> <script type="text/javascript"

  • jQuery插件HighCharts绘制2D金字塔图效果示例【附demo源码下载】

    本文实例讲述了jQuery插件HighCharts绘制2D金字塔图效果.分享给大家供大家参考,具体如下: 1.实例代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>HighCharts 2D金字塔分布图</title> <script type="text/javascript" src="js/jqu

  • jQuery插件HighCharts实现2D柱状图、折线图的组合多轴图效果示例【附demo源码下载】

    本文实例讲述了jQuery插件HighCharts实现2D柱状图.折线图的组合多轴图效果.分享给大家供大家参考,具体如下: 1.实例代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>HighCharts 2D柱状图.折线图的组合多轴图</title> <script type="text/javascript"

  • JQuery Highcharts 动态生成图表的方法

    复制代码 代码如下: $(function () { $(document).ready(function() { Highcharts.setOptions({ global: { useUTC: false } }); var chart; $('#container').highcharts({ chart: { type: 'spline', animation: Highcharts.svg, // don't animate in old IE marginRight: 10, ev

  • jQuery Chart图表制作组件Highcharts用法详解

    本文实例讲述了jQuery Chart图表制作组件Highcharts用法.分享给大家供大家参考,具体如下: Highcharts是一个制作图表的纯Javascript类库,主要特性如下: ① 兼容性:兼容当今所有的浏览器,包括iPhone.IE和火狐等等: ② 对个人用户完全免费: ③ 纯JS,无BS: ④ 支持大部分的图表类型:直线图,曲线图.区域图.区域曲线图.柱状图.饼装图.散布图: ⑤ 跨语言:不管是PHP.Asp.net还是Java都可以使用,它只需要三个文件:一个是Highchar

  • jQuery插件HighCharts绘制2D带Label的折线图效果示例【附demo源码下载】

    本文实例讲述了jQuery插件HighCharts绘制2D带Label的折线图效果.分享给大家供大家参考,具体如下: 1.示例代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>HighCharts 2D带Label的折线图</title> <script type="text/javascript" src=&q

  • 浅析jquery的js图表组件highcharts

    Highcharts是一个制作图表的纯Javascript类库, 主要特性如下: 兼容性:兼容当今所有的浏览器,包括iPhone.IE和火狐等等: 对于非商用用户免费(包括个人网站.非盈利性组织.学生团体等). 纯JS,无BS: 支持大部分的图表类型:直线图,曲线图.区域图.区域曲线图.柱状图.饼装图.散布图: 跨语言:不管是PHP..net还是Java都可以使用,它只需要三个文件:一个是 Highcharts的核心文件highcharts.js,还有a canvas emulator for

随机推荐