PHP+mysql+Highcharts生成餅狀圖

Mysql
首先我們建一張·chart_pie·表作為統(tǒng)計數(shù)據(jù)。
-- -- 表的結(jié)構(gòu) `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 ; -- -- 轉(zhuǎn)存表中的數(shù)據(jù) `chart_pie` -- INSERT INTO `chart_pie` (`id`, `title`, `pv`) VALUES (1, '百度', 1239), (2, 'google', 998), (3, '搜搜', 342), (4, '必應(yīng)', 421), (5, '搜狗', 259), (6, '其他', 83);
PHP
在pie.php我們要生成數(shù)據(jù)給前端調(diào)用:
$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',
//餅狀圖關(guān)聯(lián)html元素id值
defaultSeriesType: 'pie',
//默認圖表類型為餅狀圖
plotBackgroundColor: '#ffc',
//設(shè)置圖表區(qū)背景色
plotShadow: true //設(shè)置陰影
},
title: {
text: '搜索引擎統(tǒng)計分析' //圖表標題
},
credits: {
text: 'jb51.net'
},
tooltip: {
formatter: function() { //鼠標滑向圖像提示框的格式化提示信息
return '<b>' + this.point.name + '</b>: ' + twoDecimal(this.percentage) + ' %';
}
},
plotOptions: {
pie: {
allowPointSelect: true,
//允許選中,點擊選中的扇形區(qū)可以分離出來顯示
cursor: 'pointer',
//當鼠標指向扇形區(qū)時變?yōu)槭中停牲c擊)
//showInLegend: true, //如果要顯示圖例,可將該項設(shè)置為true
dataLabels: {
enabled: true,
//設(shè)置數(shù)據(jù)標簽可見,即顯示每個扇形區(qū)對應(yīng)的數(shù)據(jù)
color: '#000000',
//數(shù)據(jù)顯示顏色
connectorColor: '#999',
//設(shè)置數(shù)據(jù)域扇形區(qū)的連接線的顏色
style: {
fontSize: '12px' //數(shù)據(jù)顯示的大小
},
formatter: function() { //格式化數(shù)據(jù)
return '<b>' + this.point.name + '</b>: ' + twoDecimal(this.percentage) + ' %';
//return '<b>' + this.point.name + '</b>: ' + this.y ;
}
}
}
},
series: [{ //數(shù)據(jù)列
name: 'search engine',
data: data //核心數(shù)據(jù)列來源于php讀取的數(shù)據(jù)并解析成JSON
}]
});
});
此外,格式化數(shù)據(jù)市,如果要顯示百分比,可使用this.percentage,Highcharts會自動將整數(shù)轉(zhuǎn)換為百分數(shù),如果要顯示數(shù)據(jù)量,直接使用this.y。
百分比代碼如下:
formatter: function() { //格式化數(shù)據(jù)
return '<b>' + this.point.name + '</b>: ' + twoDecimal(this.percentage) + ' %';
}
實際數(shù)據(jù)是這樣的:
formatter: function() { //格式化數(shù)據(jù)
return '<b>' + this.point.name + '</b>: ' + this.y ;
}
最后我們要保留兩位小數(shù),代碼貼下:
function twoDecimal(x) { //保留2位小數(shù)
var f_x = parseFloat(x);
if (isNaN(f_x)) {
alert('錯誤的參數(shù)');
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;
}
柱狀圖、餅狀圖、曲線圖等都是一樣的。
以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。
- jQuery插件HighCharts繪制2D柱狀圖、折線圖和餅圖的組合圖效果示例【附demo源碼下載】
- jQuery插件HighCharts繪制2D柱狀圖、折線圖的組合雙軸圖效果示例【附demo源碼下載】
- jQuery插件HighCharts實現(xiàn)2D柱狀圖、折線圖的組合多軸圖效果示例【附demo源碼下載】
- jQuery插件HighCharts實現(xiàn)的2D回歸直線散點效果示例【附demo源碼下載】
- jQuery插件HighCharts實現(xiàn)的2D對數(shù)餅圖效果示例【附demo源碼下載】
- jQuery插件HighCharts繪制2D帶Label的折線圖效果示例【附demo源碼下載】
- jQuery插件HighCharts繪制的基本折線圖效果示例【附demo源碼下載】
- Javascript highcharts 餅圖顯示數(shù)量和百分比實例代碼
- jQuery Chart圖表制作組件Highcharts用法詳解
- jQuery.Highcharts.js繪制柱狀圖餅狀圖曲線圖
- 淺析jquery的js圖表組件highcharts
- JQuery Highcharts 動態(tài)生成圖表的方法
- jQuery插件HighCharts繪制2D金字塔圖效果示例【附demo源碼下載】
相關(guān)文章
Tab頁界面 用jQuery及Ajax技術(shù)實現(xiàn)(php后臺)
到了B/S開發(fā)時代,網(wǎng)頁前端布局也把Tab頁的布局形式吸收了過來。特別是和Ajax技術(shù)結(jié)合起來,可以更充分發(fā)揮Tab頁的良好表現(xiàn)力和數(shù)據(jù)緩存的優(yōu)勢,是一種良好的網(wǎng)頁布局形式2011-10-10
基于$.ajax()方法從服務(wù)器獲取json數(shù)據(jù)的幾種方式總結(jié)
下面小編就為大家分享一篇基于$.ajax()方法從服務(wù)器獲取json數(shù)據(jù)的幾種方式總結(jié),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01
jQuery Ajax提交表單查詢獲得數(shù)據(jù)實例代碼
用戶輸入一個表單,輸入準考證和驗證碼,驗證用戶是否輸入表單,點擊查詢提交,然后從服務(wù)器得到返回的數(shù)據(jù)并顯示出來2012-09-09
jQuery解析XML文件同時動態(tài)增加js文件的方法
這篇文章主要介紹了jQuery解析XML文件同時動態(tài)增加js文件的方法,涉及jQuery Ajax調(diào)用及返回函數(shù)中增加js文件的相關(guān)使用技巧,需要的朋友可以參考下2015-06-06

