由于业务上的需求,网上找了不少例子,最终选择了highcharts 来实现曲线报表。下面我把个人心得与大家分享下:
![]()
如上图所示
X轴为整点时间轴
Y轴为数据坐标轴
该功能主要是检测当天 某时间检测到的数据。
代码如下所示:
Highcharts.setOptions({global:{useUTC : false}});
$(function(){
//声明报表对象
var chart = new Highcharts.Chart({
chart: {
renderTo: 'container', // 报表显示在 页面位置 container 为 div 定义的属性
defaultSeriesType: 'spline', // 定义报表类型 例如:line ,spline ,colume
events: {
load: getForm //调用js 方法
}
},
title:{
text:'实时监测曲线图" //定义曲线报表 名称
},
xAxis: {
type: 'datetime', // 定义时间轴的 类型
maxPadding : 0.05,
minPadding : 0.05,
tickWidth:1,//刻度的宽度
lineWidth :1,//自定义x轴宽度
gridLineWidth :1,//默认是0,即在图上没有纵轴间隔线
lineColor : '#990000'
},
yAxis: {
max:12, // 定义Y轴 最大值
min:0, // 定义最小值
minPadding: 0.2,
maxPadding: 0.2,
tickInterval:1, // 刻度值
title: {
text: 'PH值'
},
// plotLines 表示为定义曲线报表中的 (刻度线)或者叫做(定义的区间范围)
// 一下为2条表示线
plotLines: [{
value: 6,
color: 'green',
dashStyle: 'shortdash',
width: 2,
label: {
text: '正常'
}
},{
value: 8,
color: 'green',
dashStyle: 'shortdash',
width: 2,
label: {
text: '正常'
}
}
}]
},
tooltip: { // 表示为 鼠标放在报表图中数据点上显示的数据信息
formatter: function() {
return '<b>'+'日期:' +'</b>'
+Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', this.x) +'<br/>'+
'<b>'+'<%=lbname%>:' +'</b>'+ this.y+' <%=shll%>';
}
},
series: [{
name: 'PH',
data: [] // 此处存放数据值 用,分开 例如:1.8,8.9,null,9.2, 如果在某一点数据为空
//可以用null 来表示
//如果是想动态扶植 这个位置 应该为空 即:data: []
}]
});
// 与后台进行数据交互
function getForm(){
jQuery.getJSON("test!test.do?id=123456", null, function(data) {
//为图表设置值
chart.series[0].setData(data);
});
}
//定时刷新 列表数据
$(document).ready(function() {
//每隔3秒自动调用方法,实现图表的实时更新
window.setInterval(getForm,50000);
});
});
//定义 曲线报表图 的样式
Highcharts.theme = {
colors: ['#058DC7', '#50B432', '#ED561B', '#DDDF00', '#24CBE5', '#64E572', '#FF9655',
'#FFF263', '#6AF9C4'],
chart: {
backgroundColor: {
linearGradient: [0, 0, 500, 500],
stops: [
[0, 'rgb(255, 255, 255)'],
[1, 'rgb(240, 240, 255)']
]
},
borderWidth: 2,
plotBackgroundColor: 'rgba(255, 255, 255, .9)',
plotShadow: true,
plotBorderWidth: 1
},
title: {
style: {
color: '#000',
font: 'bold 16px "Trebuchet MS", Verdana, sans-serif'
}
},
subtitle: {
style: {
color: '#666666',
font: 'bold 12px "Trebuchet MS", Verdana, sans-serif'
}
},
xAxis: {
gridLineWidth: 1,
lineColor: '#000',
tickColor: '#000',
labels: {
style: {
color: '#000',
font: '11px Trebuchet MS, Verdana, sans-serif'
}
},
title: {
style: {
color: '#333',
fontWeight: 'bold',
fontSize: '12px',
fontFamily: 'Trebuchet MS, Verdana, sans-serif'
}
}
},
yAxis: {
//minorTickInterval: 'auto' // 此处会在Y轴坐标2点之前出现小格 所以就没有使用。
},
legend: {
itemStyle: {
font: '9pt Trebuchet MS, Verdana, sans-serif',
color: 'black'
},
itemHoverStyle: {
color: '#039'
},
itemHiddenStyle: {
color: 'gray'
}
},
labels: {
style: {
color: '#99b'
}
}
};
var highchartsOptions = Highcharts.setOptions(Highcharts.theme);
针对于此种情况的后台返回的参数如:[new DATE().gettime(),12] --->[时间,数据]
后台传值为:[[new DATE().gettime(),12] ,[new DATE().gettime(),10] ,[new DATE().gettime(),9] ]
根据查询返回的list
JSONArray array = new JSONArray();
array.addAll(list);
response.getWriter().println(array.toString());
返回 结果集到前台js中去
![]()
上图是实现的 月报表,主要是查询系统当前月每天的平均数的记录
sql:
select round(avg(jcsz), 2) jcsz ,mdate from (
select to_char(to_date(substr(z_date,1,10),'yyyy-mm-dd'), 'dd') mdate, jcsz
from table where z_date like '%"2011-07-07"%' and cydd = '123456'
) a group by a.mdate order by mdate
如果某天数据不存在 则 需要补空 ‘null’
补空后台代码:
Set<Integer> set = new HashSet<Integer>();
for(int a =1 ; a<31 ; a++){
set.add(a);
}
for(int k:set){
boolean flag = false;
for(int i = 0 ; i<list.size() ; i++){
Test test = list.get(i);
int day = test.getInt("MDATE");
if(k==day){
map.put(k, bean.getStr("JCSZ"));
flag = true;
}
}
if(flag)
continue;
map.put(k, "null");
}
传map返回页面
request.setAttribute("map", map);
前台代码
var chart;
jQuery(document).ready(function() {
chart = new Highcharts.Chart({
chart: {
renderTo: 'container',
defaultSeriesType: 'spline'
},
title: {
text: "月监测曲线图",
x: -20
},
xAxis: {
maxPadding : 0.05,
minPadding : 0.05,
tickPixelInterval : 10,
tickWidth:5,//刻度的宽度
lineColor : '#990000',//自定义刻度颜色
lineWidth :1,//自定义x轴宽度
gridLineWidth :1,//默认是0,即在图上没有纵轴间隔线
categories: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15',
'16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30','31']
},
yAxis: {
max:12,
min:0,
minPadding: 0.2,
maxPadding: 0.2,
tickInterval:1,
title: {
text: 'test'
},
plotLines: [{
value: 150,
color: 'green',
dashStyle: 'shortdash',
width: 2,
label: {
text: '正常'
}
},
{
value: 1,
color: 'green',
dashStyle: 'shortdash',
width: 2,
label: {
text: '正常'
}
}]
},
tooltip: {
formatter: function() {
return '<b>'+ '第' +'</b>'+ this.x +' 天 : '+ this.y;
}
},
series: [ {
name: 'test',
data: [ <%
Map map = (Map)request.getAttribute("map");
Iterator it = map.entrySet().iterator();
String valuee =" ";
while (it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
Object key = entry.getKey();
valuee+= entry.getValue()+",";
}
out.println(valuee);
%>
]
}]
});
});
Highcharts.theme = {
colors: ['#058DC7', '#50B432', '#ED561B', '#DDDF00', '#24CBE5', '#64E572', '#FF9655',
'#FFF263', '#6AF9C4'],
chart: {
backgroundColor: {
linearGradient: [0, 0, 500, 500],
stops: [
[0, 'rgb(255, 255, 255)'],
[1, 'rgb(240, 240, 255)']
]
},
borderWidth: 2,
plotBackgroundColor: 'rgba(255, 255, 255, .9)',
plotShadow: true,
plotBorderWidth: 1
},
title: {
style: {
color: '#000',
font: 'bold 16px "Trebuchet MS", Verdana, sans-serif'
}
},
subtitle: {
style: {
color: '#666666',
font: 'bold 12px "Trebuchet MS", Verdana, sans-serif'
}
},
xAxis: {
gridLineWidth: 1,
lineColor: '#000',
tickColor: '#000',
labels: {
style: {
color: '#000',
font: '11px Trebuchet MS, Verdana, sans-serif'
}
},
title: {
style: {
color: '#333',
fontWeight: 'bold',
fontSize: '12px',
fontFamily: 'Trebuchet MS, Verdana, sans-serif'
}
}
},
yAxis: {
//minorTickInterval: 'auto'
},
legend: {
itemStyle: {
font: '9pt Trebuchet MS, Verdana, sans-serif',
color: 'black'
},
itemHoverStyle: {
color: '#039'
},
itemHiddenStyle: {
color: 'gray'
}
},
labels: {
style: {
color: '#99b'
}
}
};
var highchartsOptions = Highcharts.setOptions(Highcharts.theme);

- 大小: 32.4 KB

- 大小: 44.4 KB
分享到:
相关推荐
在这个"Highcharts AJAX后台JAVA JSON 曲线报表完美可运行例子"中,我们将探讨如何结合Java后端和JSON数据格式,通过AJAX技术在网页上展示动态曲线报表。 首先,`index_lineAjax.htm`是前端HTML文件,它包含了...
Highcharts目前支持折线图,曲线图,块状图,块状-曲线图,柱形图,条形图,饼图和散点图类型。由于Highcharts具有强兼容性、灵活易用性、画面效果好等特点,能被广泛用于报表开发。感兴趣 资源太大,传百度网盘了...
Highcharts提供了多种图表类型,如折线图、曲线图、块状图、块状-曲线图、柱形图、条形图、饼图和散点图,允许开发者在同一个报表中自由组合,以满足不同的数据展示需求。 配置Highcharts非常简单,所有的配置选项...
Highcharts是一个基于JavaScript的图表库,它提供了丰富的图表类型,如折线图、曲线图、柱形图、饼图等,使得开发者能够轻松地在网站或Web应用程序中添加交互式图表。该库的特点包括: 1. **兼容性广泛**:...
3. **线型报表**:线型图是数据趋势分析的常见工具,通过连接一系列数据点形成曲线,清晰地展示数据随时间的变化。在Highcharts中,可以自定义线的颜色、样式、点标记等,还能添加数据标签和工具提示。 4. **圆形...
Highcharts是一款广泛应用于Web开发中的图表库,专为创建交互式、美观的统计图表而设计。它支持多种图表类型,包括饼图、柱状图、曲线图等,使得数据可视化变得更加直观和生动。在本篇文章中,我们将深入探讨...
综上所述,Highcharts作为一款强大的网页报表工具,其强大的图表功能、良好的兼容性和易用性使其成为Web开发者的首选之一。无论是简单的数据展示还是复杂的交互需求,Highcharts都能提供满意的解决方案。
Highcharts是一个纯JavaScript编写的图表库,它提供了一个将交互式的图表添加到您的网站或Web应用程序的简单方法。 Highcharts目前支持折线图,曲线图,块状图,块状-曲线图,柱形图,条形图,饼图和散点图类型。
目前HighCharts支持的图表类型有曲线图、区域图、柱状图、饼状图、散状点图和综合图表。HighCharts由于使用JavaScript编写,所以不需要像Flash和Java那样需要插件才可以运行,而且运行速度快。另外HighCharts还有很...
本项目利用Highcharts库、Ajax异步请求以及Json数据格式,实现了动态的曲线图、柱状图和饼图,为数据报表提供了一种直观且吸引人的呈现方式。 Highcharts是一个强大的JavaScript图表库,它支持多种图表类型,如折线...
HighCharts是一款广泛应用于Web开发中的JavaScript图表库,它能够帮助开发者轻松创建各种动态、交互式的图表,如曲线图、柱状图、饼图等。2.05版本是HighCharts的一个较早版本,但即便如此,它依然包含了丰富的功能...
本篇文章将详细探讨3种超炫的jQuery报表插件,包括柱状图、饼图和曲线图,以及它们在实际应用中的作用和优势。 首先,我们来介绍柱状图。柱状图是一种常见的统计图表,用于比较不同类别的数值。在jQuery中,如...
【报表和曲线查询系统源代码】是一个典型的IT项目,主要关注数据的检索和展示,尤其在数据分析、监控或企业管理等领域有着广泛的应用。该系统的核心功能是提供用户友好的界面,以便用户可以方便地进行各类查询操作,...
在jQuery报表中,可以借助第三方插件如Chart.js、Highcharts、jqPlot或Google Charts等来实现曲线图的绘制。这些插件提供了丰富的定制选项,包括颜色、轴标签、数据点标记、图例等,使得曲线图既美观又实用。 例如...
Highcharts是一款强大的JavaScript图表库...无论是用于数据分析、报表展示还是交互式应用,Highcharts都能提供高质量的解决方案。通过学习和掌握Highcharts,开发者可以提升网页的用户体验,使数据更具表现力和吸引力。
在压缩包“图形报表”中,可能包含了实现这些图表和报表功能的源代码。通过学习和理解这些源码,开发者可以了解到如何使用JavaScript和相关库创建动态、交互的数据可视化组件,并将其应用于实际项目中。源码通常包括...
4. **WebSocket**:如果报表需要实时更新,可能用到WebSocket协议,它提供双向通信,使服务器能主动推送数据到客户端,实现数据的即时更新。 5. **媒体元素**:HTML5对音频和视频的支持使得在报表中嵌入多媒体资源...
在ASP.NET开发中,动态生成曲线和柱状报表是一项常用且重要的任务,它涉及到数据可视化、Web编程和文档处理等多个技术领域。以下是对这个主题的详细解析: 首先,曲线图和柱状图是数据可视化的基本元素,它们能够...
在JavaScript中,有多种库可以帮助我们实现这些图表的绘制,如ECharts、D3.js、Chart.js、Highcharts等。这些库提供了丰富的API和配置选项,允许开发者自定义图表的颜色、样式、交互行为等,以满足不同的需求。 以...