`
JavaSam
  • 浏览: 951750 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

highchart图表控件封装调用(持续更新……)

 
阅读更多
/**
 * @author wsf hightcharts封装调用
 */
;
(function (win,$){
	$.chartDataCache = {};//图表数据缓存
	/**
	 * hightchart扩展
	 */
	function myChart (){
		this.colors = ['#058DC7', '#50B432', '#ED561B', '#DDDF00', '#24CBE5', '#64E572', '#FF9655',  '#FFF263', '#6AF9C4'];
		this.chartType={};
		this.title = "";//主标题
		this.subtitle = "";//子标题
		this.foottitle = "";
		this.pointWidth = 50;//图像宽度
	    this.yAxis = "收入"; //y坐标标题
	    this.tooltip = "元";
	    this.legend = {
			    itemDistance: 50,
			    borderWidth: 1,
			    shadow: true,
                backgroundColor: (Highcharts.theme && Highcharts.theme.legendBackgroundColor || '#FFFFFF')
	    };//图例
	    this.data = [];//数据对象
	    
	}
	/**
	 * 原型对象
	 */
	myChart.prototype = {
		constructor:myChart,//构造函数
		//生成图表
		createChart:function (container,data,flg){
			var that = this;
			var opt = null;
			if(flg&&flg == "muti")
				opt = that.parse2xAxisAndChartdataMulti(data);//将数据解析为横坐标和chart数据(多维度)
			else
				opt = that.parse2xAxisAndChartdata(data);//将数据解析为横坐标和chart数据
			$.chartDataCache[flg] = opt;//缓存数据
			container.highcharts({
				chart: that.chartType,
				title:{
					text:that.title,
					x:0
				},
				xAxis:{
					categories:opt.x
				},
				yAxis:{
						title : {
							text : this.yAxis
						},
						plotLines : [ {
							value : 0,
							width : 1,
							color : '#808080'
						} ]
				},
				plotOptions: {
			        series: {
			            pointWidth: this.pointWidth
			        }
				},
				tooltip:{
					valueSuffix:that.tooltip
				},
				legend:that.legend,
				series:opt.d
			});
		},
		//把请求回来的数据解析为横坐标和chart数据
		parse2xAxisAndChartdata:function (data){
			var opt = {};
			opt.x = [];//横坐标
			opt.d = [];//chart数据
			var _ddata = [];
			for(var i in data){
				var _nm = $.trim(data[i].name);//名称
				var _d = parseFloat(data[i].data);//数据
				opt.x.push(_nm);
				var td = {color:this.colors[i],y:_d};
				_ddata.push(td);
			}
			opt.d.push({name:this.foottitle,data:_ddata});
			return opt;
		},
		//把请求回来的数据解析为横坐标和chart数据(多维度)
		parse2xAxisAndChartdataMulti:function (data){
			var opt = {};
			opt.x = [];//横坐标
			opt.d = [];//chart数据
			var gpdata = this.groupData(data);
			opt.x = gpdata[1];//月份
			for(var i in gpdata[0]){
				var tmpdata = {};
				var name = gpdata[0][i];
				tmpdata["name"] = name;
				tmpdata["data"] = [];
				for(var j in data){
					var tdata = data[j];
					var _nm = $.trim(tdata.name);
					var _d = parseFloat(tdata.data);//数据
					if(_nm == name){
						tmpdata["data"].push(_d);
					}
				}
				opt.d.push(tmpdata);
			}
			return opt;
		},
		//js分组
		groupData:function(data,groupname){
			var ret = [];
			var tempret = [];
			var tempret2 = [];
			var names = {},times={};
			for(var i in data){
				var tdata = data[i];
				var _nm = $.trim(tdata.name);
				var _time = $.trim(tdata.time).substring(4);//时间
				if(!names[_nm]){
					tempret.push(_nm);
					names[_nm] = 1;//标示已经添加过
				}
				if(!times[_time]){
					tempret2.push(parseInt(_time,10)+"月");
					times[_time] = 1;//标示已经添加过
				}
			}
			ret.push(tempret);
			ret.push(tempret2);
			return ret;
		},
		//创建饼图
		createPieChart:function (container,data,flg){
			this.chartType = {  
	             type:"pie"//饼图
	         };  
            this.createChart(container,data,flg);

		},
		//创建折线图
		createLineChart:function (container,data,flg){
			this.chartType = {
					type:"line"//折线图
			};
			this.createChart(container,data,flg);
		},
		//创建柱状图
		createColumnChart:function (container,data,flg){
			this.chartType = {
					type:"column"//柱状图
			};
			this.createChart(container,data,flg);
		},
		//创建柱状图
		createBarChart:function (container,data,flg){
			this.chartType = {
					type:"bar"//横向柱状图
			};
			this.createChart(container,data,flg);
		}
	}
	win.myChart = myChart;//外部调用入口
})(window,jQuery);

 

 

1
0
分享到:
评论
3 楼 JavaSam 2014-07-18  
lianglaiyang 写道
怎么用呢?

var _myChart = new myChart();

_myChart.foottitle = "yourtitle";
_myChart.createColumnChart($("#incomeChartBusi"),data);//一维度


_myChart.foottitle = "yourtitle";
_myChart.createLineChart($("#incomeChartDeptTime"),data,"muti");//多维

其中data参数根据自己自己需要可以自行修改

自定义解析数据函数

_myChart.parse2xAxisAndChartdata = your function //这句话放在create之前即可
2 楼 lianglaiyang 2014-07-17  
怎么用呢?
1 楼 hellostory 2014-07-17  
不错,受启发了!一开始还想用Java建模,看来这个更方便!

相关推荐

    web网页图表控件highchart示例

    在“web网页图表控件highchart示例”中,我们将深入探讨Highcharts的基本用法、特性以及如何在实际项目中应用。 1. **安装与引入** 在HTML文件中,可以通过CDN链接或本地文件引入Highcharts的JS库。一般来说,引入...

    Highchart图表插件API详解

    Highcharts是一款强大的JavaScript图表库,用于创建各类动态且交互式的图表,如柱形图、曲线图、饼图等。在本文中,我们将深入探讨Highcharts的API,了解如何使用其特性来定制和优化你的图表。 1. **画图组件...

    多个highchart图表导出(复制、下载)方法

    在IT行业中,Highcharts是一个广泛使用的JavaScript库,用于创建交互式的柱状图、折线图、饼图等数据可视化图表。对于需要展示多个图表的情况,有时用户可能希望将这些图表一起导出或下载为单一的图像文件,以便于...

    引用:highChart控件不错,挺漂亮

    在本文中,我们将深入探讨HighChart控件的核心特性、使用方法以及如何结合源码进行定制。 HighChart是一款基于JavaScript的开源图表库,它可以生成多种类型的图表,包括柱状图、折线图、饼图、散点图、面积图等,...

    highchart使用demo+文档

    5. 动态更新:如果需要,可以随时更新图表数据。 ### 2. 文件结构 在使用Highcharts时,你需要以下基本文件: - `highcharts.js` 或 `highcharts.src.js`:Highcharts的核心库。 - `exporting.js`(可选):用于...

    highchart图表加图标.rar_The Weather_highchart_highcharts

    Use the highcharts foreground frame to draw a graph and display icons at each point of the curve. Effect such as weather forecast chart.

    Highcharts开源的JS图表控件简介

    Highcharts开源的JS图表控件简介:制作图表的纯Js控件,Highcharts v2.2.0主要特性:兼容当今所有的浏览器,包括iPhone、IE和火狐等等;对个人用户完全免费;纯JS,无BS支持大部分的图表类型:直线图,曲线图、区域图...

    Highchart应用封装

    **标题:“Highchart应用封装”** 在Web开发中,数据可视化是至关重要的,而Highcharts是一个强大且流行的JavaScript图表库,用于创建各种交互式的图表,如柱状图、折线图、饼图等。本话题将深入探讨如何对...

    HighChart API

    HighChart API 是一款强大的JavaScript图表库,用于在Web页面上创建动态、交互式的图表和图形。这个API提供了丰富的选项和功能,使得开发者可以定制各种类型的图表,如柱状图、折线图、饼图、散点图等。下面将详细...

    highchart c# demo

    Highcharts是一款强大的JavaScript图表库,它能够帮助开发者创建各种类型的互动图表,如折线图、柱状图、饼图等。在C#环境下,我们通常会结合ASP.NET或MVC框架来利用Highcharts生成前端图表。这个"highchart c# demo...

    获取Highcharts图表对象的方法汇总

    获取Highcharts图表对象的方法汇总

    matlab开发-HighChart

    在本项目"matlab开发-HighChart"中,我们将重点探讨如何利用MATLAB与HighChart结合,创建动态和交互式的图表。HighChart是一个强大的JavaScript库,用于构建高质量的网页图表,其在数据可视化方面表现卓越,尤其适用...

    HighChart

    在实际项目中,HighChart通常与后端服务配合,通过Ajax异步获取数据,动态更新图表。这样,当数据发生变化时,图表会实时更新,提供即时反馈。同时,HighChart还支持导出图表为图片或PDF,方便用户保存和分享。 在...

    HighChart曲线图

    6. **动态更新和交互**:HighChart支持图表的动态更新,例如响应用户的点击事件或者根据服务器返回的新数据实时更新图表。此外,还可以添加工具提示、缩放、平移等功能增强交互体验。 7. **其他资源**:`examples`...

    reactnativechartview一个基于highchart的图表RN组件

    3. **数据绑定**:你可以将动态数据绑定到图表上,通过改变数据源来实时更新图表。React Native的state或props机制可以帮助实现这一点。 4. **交互性**:Highcharts支持多种交互功能,如点击事件、数据缩放、图例...

    Highchart Demo

    在"Highchart Demo"这个实例中,我们将深入探讨如何利用Highcharts来制作各种类型的图表,以及相关的JavaScript配置和数据接收格式。 首先,Highcharts支持多种图表类型,如折线图、柱状图、饼图、散点图、面积图等...

    node-highcharts, 在使用节点的服务器上,生成客户端图表的示例.zip

    node-highcharts, 在使用节点的服务器上,生成客户端图表的示例 过时警告这里演示的初始工作现在已经开始了几年,没有signficant更新。 现在有可能更好的实现这些目标的方法,我强烈建议不要将它的用作基础。 现在...

    highchart

    使用`Highcharts.Chart`方法初始化图表后,可以使用`chart.update()`方法动态更新图表配置,实现数据的实时更新或交互式修改。 10. **响应式设计**: Highcharts支持响应式布局,通过`chart.setSize()`可以调整...

    highchart网页图表

    Highcharts是一款广泛应用于网页图表开发的JavaScript库,它以其易用性、丰富的图表类型和出色的交互功能而受到开发者们的喜爱。这款库可以帮助开发者快速、高效地在网页上创建出美观且功能强大的数据可视化图表。 ...

Global site tag (gtag.js) - Google Analytics