`
Everyday都不同
  • 浏览: 723422 次
  • 性别: Icon_minigender_1
  • 来自: 宇宙
社区版块
存档分类
最新评论

Highcharts混合图(2个Y轴)——结合后台数据

    博客分类:
  • jsp
阅读更多

其实做了这么久的highcharts,感觉上手并不太难,难点在于实际应用中,如何动态地拼装出数据结构才是最关键的。最近做了一个混合图,包含两个Y轴,还涉及到对后台数据的结合。

首先,画一个空的“架子”:

Highcharts.setOptions(dark_comm);
	$("#chart").highcharts({                                                
		 chart : {
	    	margin:[50,0,35,60],
				renderTo: 'avgTime',
				type: 'spline',
				marginRight: 10                                                             
	      },                                                                      
	          title      : {                                                                
	          text   : '失败率、笔数走势图',
	          style  : {
	        	  color:'#FFFFFF'
	          },
	          align  :"center",
	         /* marginTop :10*/
	      },                                                               
	      xAxis             : {                                                                
	          type              : 'datetime',                                                   
	          tickPixelInterval : 150                                              
	      },                                                                      
	      yAxis : [{
//		      	  allowDecimals : false,                                                                
		    	  title         : '失败率',                                                                  
		         /* plotLines     : [{                                                       
		        	  value         : 0,                                                       
		      	 	}],*/
		      	 labels:{
		      		format: '{value}%',
		      	 },
		      	  max:100,
	          tickInterval:25,
		          min: 0
		       },{
//		    	 allowDecimals : false,                                                                
		    	  title         : '笔数',                                                                  
		          /*plotLines     : [{                                                       
			          value         : 0,                                                       
			          width         : 1                                                     
		      	 	}],*/
		          min           : 0,
		         opposite: true
		       }],                                                                       
		      tooltip : {                                                              
		    	   xDateFormat: '%Y-%m-%d %H:%M',
		           shared:true
		      },                                                                      
		      legend : {                                                               
		    	  align: 'right',
             verticalAlign: 'top',
             borderWidth: 0,
             y:10,
	          enabled : true                                                     
		      },                                                                      
		      exporting : {                                                            
		          enabled : false                                                      
		      }, 
	    marker: {
         enabled: false
     },
	      series : create()                                                                     
	  });

 这里,需要在一个图上同时画出2个指标:失败率和笔数。可以看出,series是由函数动态生成的。其实参照官网上混合图的例子并不难,但这里是由create()函数动态生成的,涉及到一些highcharts语法

和一点需要注意的小问题,如下:

$.ajax({  
        type: "POST",  
        dataType:"json",
        data:dataParam,
        async: false, //表示同步,如果要得到ajax处理完后台数据后的返回值,最好这样设置  
        url: url,//相对路径
        success: function(data){
        	var ratioList = data.ratioList;
        	var countList = data.countList;
        	//填充series
        	var $chart1 = $("#chart").highcharts();
					var series1 = $chart1.series;
					while(series1.length > 0) {  
						series1[0].remove(false);  
						series1[0].remove(false);
				    } 
					
					$chart1.addSeries({
				          name : '失败率',
				          turboThreshold:1500,
				          yAxis:0,
				          color:"#79E570",
				          marker: {
								enabled: false
							},
				          data : ratioList                                                               
					});
					
					$chart1.addSeries({
						name : '笔数',
						turboThreshold:1500,
						color:"#3CB034",
						yAxis:1,
						type: 'area',
						marker: {
							enabled: false
						},
						data : countList                                                             
					});
        }
   });

 这里值得注意的几个点:

1)while(series1.length > 0) {  

series1[0].remove(false);  

series1[0].remove(false);

这段代码最好加上,可能首次渲染不会走这段代码,因为series:[],但考虑到代码的健壮性,如果条件改变,需要重新加载数据(架子还在那),是需要把之前的series中的数据给clear掉的。

为啥while里第二行不是series[1].remove()?因为你第一行series1[0].remove(false)之后,此时原来的series1数组只剩一个元素了,所以你第二行用series[1]的话会引起数组下标越界,表现在

js上就是undefined异常。

2)在这种混合图的数据填充时,$chart1.addSeries的操作必须注意先后顺序,本例中第二个addSeries的操作在后,并且其yAxis指定为1,表明对应第二个Y轴。做的过程中发现,如果你把第二个

addSeries的操作顺序放在前面,即使你指定了其yAxis为1,渲染的时候series数组的元素顺序还是由addSeries的顺序决定的。

3)每个series单元可以分别指定其type。

 

效果示范:



 

  • 大小: 13.6 KB
分享到:
评论

相关推荐

    折线、双Y轴、不交叉、highcharts、按照日期分割线

    在这个特定的场景中,我们关注的是如何使用Highcharts来绘制一个具有双Y轴的折线图,并且这两条折线不会交叉,同时根据日期设置分割线,而且要确保在旧版本的IE浏览器(如IE8)中也能正常工作。 首先,我们需要了解...

    highcharts导出图片的后台代码

    highcharts导出图片的后台代码,这样就不用从highcharts官网服务器上进行图片导出了,成了一个本地的服务器!

    highcharts 动态指定 x y数据

    在Highcharts中,数据通常是以数组的形式表示,每个数组元素代表一个数据点,包含X轴和Y轴的值。例如,对于一个简单的折线图,数据可能如下所示: ```javascript var data = [ {x: 1, y: 20}, {x: 2, y: 30}, {x...

    双y轴统计图和条件查询

    在数据分析和可视化领域,双y轴统计图是一种特殊类型的图表,它允许我们在同一个图表上比较两个具有不同量级或单位的数据系列。这种图表通常用于显示一个数据系列与另一个相关但不同尺度的数据系列之间的关系。例如...

    Highcharts AJAX后台JAVA JSON 曲线报表完美可运行例子 不包含官方JS 自己下载

    在这个"Highcharts AJAX后台JAVA JSON 曲线报表完美可运行例子"中,我们将探讨如何结合Java后端和JSON数据格式,通过AJAX技术在网页上展示动态曲线报表。 首先,`index_lineAjax.htm`是前端HTML文件,它包含了...

    Highcharts 多个Y轴动态刷新数据的实现代码

    在本文中,我们将深入探讨如何使用Highcharts库创建一个具有多个Y轴并能动态刷新数据的图表。Highcharts是一款强大的JavaScript图表库,它允许开发者轻松地在网页上绘制各种类型的图表,如折线图、柱状图、饼图等。 ...

    highcharts加载多条曲线数据

    3. **配置对象**:创建一个JavaScript对象,包含图表的配置信息,如标题、类型、数据、X轴和Y轴的设置等。例如,加载多条曲线数据的配置可能如下: ```javascript var chartOptions = { chart: { renderTo: '...

    Highcharts实时趋势图

    数据通常以JSON格式提供,每一项代表一个数据点,包含x轴和y轴的值。对于实时趋势图,x轴通常是时间戳,y轴是对应的时间序列数据。 6. **交互功能** 高级特性如点击事件、数据列的钻取(drilldown)和工具提示...

    Highcharts实现图形报表

    在JavaScript代码中,我们创建一个Highcharts对象,并配置其属性,如标题、x轴和y轴的标签、数据系列、颜色、图表类型等。 对于“柱形对比图”,我们可以设置多个数据系列,每个系列代表一个待比较的项。Highcharts...

    highcharts快速生成百万数据点折线图.rar

    在处理大数据量时,Highcharts提供了高效的优化策略,使得即使百万级别的数据点也能流畅地在折线图上展示。本文将深入探讨如何使用Highcharts高效地生成百万数据点的折线图。 首先,理解数据分块加载的概念是关键。...

    Highcharts柱状图显示

    Highcharts是一款广泛应用于Web开发中的JavaScript图表库,它能够帮助开发者轻松创建各种动态、交互式的图表,包括柱状图、折线图、饼图等多种类型。在本案例中,我们聚焦于"Highcharts柱状图显示",特别是柱状图...

    关于HighCharts无法传入数据

    HighCharts是一款广泛应用于Web开发中的JavaScript图表库,用于创建各种数据可视化效果,如柱状图、折线图、饼图等。在使用HighCharts时,可能会遇到无法正确传入数据的问题,这通常与数据格式、JavaScript语法错误...

    Highcharts 构建曲线图

    然后,在JavaScript中,我们创建一个Highcharts配置对象,定义图表的属性,如标题、X轴和Y轴的标签、数据系列等。例如,以下是一个简单的配置对象,用于创建一个曲线图: ```javascript var chartOptions = { ...

    highCharts-时序图

    在"时序图"这个场景中,HighCharts被用来展示实时更新的数据,就像心电图一样连续不断地展示时间序列信息。这种类型的图表对于监控动态变化的数据非常有用,比如在金融市场的股票价格跟踪、物联网设备的状态监测或者...

    echarts折线图曲线图分段用不同颜色显示,曲线改变颜色例子,Y轴超过某一数值曲线变色

    echarts折线图曲线图分段用不同颜色显示,Y轴超过某一数值变色,echarts曲线改变颜色例子,x轴和y轴数据可以自己定义,曲线默认显示黑色(black),400以上900以下显示成金色(gold)。 核心代码 visualMap: { show: false...

    highcharts+struts2的demo

    总结,这个"highcharts+struts2的demo"是一个很好的学习资源,它展示了如何将强大的数据可视化工具Highcharts与成熟的Java Web框架Struts2相结合,实现动态、交互式的图表应用。通过深入研究和实践,开发者可以掌握...

    highcharts实现雷达图效果

    在Web应用中,雷达图常用于展示多维数据,每个轴代表一个特性或指标,数据点则对应于所有特性的综合评价。本文将详细探讨如何使用Highcharts实现雷达图效果。 首先,我们需要了解Highcharts的基本使用。在HTML文件...

    highcharts实现从mysql数据库获取数据生成折线图

    本篇将详细介绍如何利用Highcharts结合MySQL数据库,实现在Web应用中动态生成折线图。 首先,我们需要了解Highcharts的基本使用。Highcharts是一个轻量级的图表库,它提供了丰富的API和配置选项,可以自定义图表...

    highcharts后台数据交互及各种常用设置配置

    highcharts的常用配置,后台数据的交互。数据的下钻,已经导出相关配置,返回按钮配置。堆叠图,加折线图,展示环比增量。包含内容丰富,

Global site tag (gtag.js) - Google Analytics