highcharts中如何正确显示时间格式的x轴

我从后台取到数据,用highchart绘图后,发现y轴的值和提示框tooltip中显示的都是正确的,但x轴的时间没有正确显示,显示的是1970-01-01。

这个问题花了我将近一天的时间,才解决了。

查了很多博客,但是没有具体说到怎么解决,我看到最可靠的回答说是series中data的封装不正确。

series中data封装格式例子:

data:[

[Date.UTC(2010,1,1,10,20),120],

[Date.UTC(2010,1,1,10,20),120],

[Date.UTC(2010,1,1,10,20),120],

....

],

但是我从后台取到的数据是json格式的,在javascript中,data是ajax取到的数据,

一开始的代码是:

for(i=0;i<data.length;i++){

var tm=data[i].tm;

var ydata=data[i].ydata;

alldata.push([tm,ydata]);

}

highcharts中series部分代码:

series:{

data:alldata,

}

后来仔细看了series封装格式,发现要用Date.UTC这个函数,

就改了上面for循环中的代码,

for(i=0;i<data.length;i++){

var tm=data[i].tm;//tm应该是字符串类型

var ydata=data[i].ydata;

var someDate = new Date(Date.parse(tm));//把字符串类型专程Date类型

var tms=Date.UTC(someDate.getFullYear(), someDate.getMonth(), someDate.getDate(), someDate.getHours(),someDate.getMinutes());//进行Date.UTC处理
alldata.push([tms,ydata]);
}

经过上述改动后,x轴显示了正确的时间格式。

实例如下:

/*document.write('<meta http-equiv="content-Type" content="text/html;charset=utf-8"/>');*/

var jq=jQuery.noConflict();
jQuery(document).ready(function() {

	oneWaterLever();
})
function mthLever(){
	var rz=0;  //监测值

	 var min=0;   //最小值
	 var max=0;   //最大值
	 var alldata1=[];//highcharts中series的data值

	 var skcd="420116000125";
	
	var dateBegin=document.getElementById("dateBegin3").value;
	var dateEnd=document.getElementById("dateEnd3").value;
	var mthurl="getMthData?skcd="+skcd+"&dateBegin="+dateBegin+"&dateEnd="+dateEnd;
	jq.ajax({
		type:"get",
		url:mthurl,		
        global: false,  //Ajax的范围
		async:false,
		dataType:"json",
		success:function(data){
			//alert(JSON.stringify(data));
			
				if(data.name="rzdate"){
					for(i=0;i<data.rzdate.length;i++){		
						rz=data.rzdate[i].rz;
						tm=data.rzdate[i].tm;
						var someDate = new Date(Date.parse(tm));
						var tms=Date.UTC(someDate.getFullYear(), someDate.getMonth(), someDate.getDate(), someDate.getHours(),someDate.getMinutes());
						alldata1.push([tms,rz]);
				
					}
				}
				
			
		
				if(data.name="min"){
					min=data.min;
				}
				if(data.name="max"){
					max=data.max;
				}
				var container="mthproc-container";  //曲线容器
				var formats='%Y-%m-%d'; 
				var interval=3600*1000;
				drawHighcharts(container,name,formats,interval,alldata1,min,max);
		
		},
		error:function(err){
	          // alert(err.toString());
			$("#nodata").show();
	       }	
	});

function drawHighcharts(container,name,formats,interval,alldata1,min,max){
	
	 return  new Highcharts.Chart({
		 chart:
			{ 	renderTo:container,
		        type:'spline',
		        reflow:true,
			},
			 legend: {
		            align: 'center',
		            backgroundColor: '#FFFFFF',
		            borderColor: '#909090',
		            borderWidth: 1,
		            borderRadius:5,
		            shadow:true,
		        },
		        credits: {  
                   enabled: false // remove high chart logo hyper-link  
               },  
			title:
			{
				text: name+'水位过程线'
			},
			tooltip: 
			{
				 useHTML: true,
				headerFormat: '<table><tr><td style="color:green">时间:{point.key}</td></tr>',
				pointFormat: '<tr><td><b>水位:{point.y}</b></td></tr>',
				
            footerFormat: '</table>',
				xDateFormat:formats,
				borderRadius:10,
				crosshairs: {
	                width: 1,	              
	                dashStyle: 'solid',
	            }

	        },
	        plotOptions:{
	        	spline:{
	        		marker:{
	        			enabled:false,
	        		},
	                lineWidth:2,//线条粗细  
	        	},	
	        	  series: {
	                  marker: {
	                      enabled: false
	                  }
	              },
	        },
	      
	       
	        xAxis:{
	        	
	        	title: {
		                text: '时间',
		                style: {
		                    color: '#4572A7'
		                }
		            },
		            type: 'datetime',
		            minTickInterval: interval,//间隔值		           
		            labels: {   
		          
		                formatter: function () { 
		                	
		                	return Highcharts.dateFormat(formats,this.value); 
		                
		                	
		                },
		                rotation:30,//倾斜30度,防止数量过多显示不全
		            },
	        },
	        yAxis:{
	        	gridLineWidth:1,
	        	minorGridLineWidth:1,
	        	title:{
	        		text:'水位(米)',
	        		style:{
	        			color:'#4572A7'
	        		},
	        	},
	        	labels:{
	        		formatter:function(){
	        			return this.value;	        				        		
	        		},
	        		style:{
	        			color:'#4572A7'
	        		},
	        	},	
	    
	        	 min: min,  //最小
				max:max,//最大 
	        },
	        series:[{ 
					name: '水位',
		            color: '#4572A7',
		            type: 'line',
		          tooltip: {
		                valueSuffix: '米',
		            },
		            data: alldata1, 
					},
//					
				],
});
}    


Highcharts提供了自带的双X展示方式,但是效果可能不太理想,调整起来也会比较麻烦。不过,你可以使用Highcharts的分组插件grouped-categories.js来实现想要的效果。你可以稍作修改,将你的代码的xAxis部分替换为以下代码来实现x的分组: xAxis: { categories: \[{ name: '2011年', categories: \['一', '二', '三'\] }, { name: '2012年', categories: \['一', '二', '三'\] }, { name: '2013年', categories: \['一', '二', '三'\] }\] } 这样,你的x就会按照年份进行分组显示。希望对你有帮助!\[1\] \[2\] #### 引用[.reference_title] - *1* [hightChart 实现x分组](https://blog.csdn.net/yuanfanlove/article/details/121969552)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Highcharts:X分组堆叠图](https://blog.csdn.net/yueritian/article/details/41309137)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Highcharts实现X分组分类](https://blog.csdn.net/qq_40585267/article/details/104896165)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值