java代码实现highchart与数据库数据结合完整案例分析(二)---折线图
作者原创:未经博主允许不许转载
在上一篇的博客中,展示和分析了如何做一个饼状图,有疑问可以参考上一篇博客。
现在分析和展示折线图的绘制和案例分析,
先展示效果图:

与饼状图不同的是,折线图展现更多的数据,也会体现出更多的自动性。
先展示一下js代码:
<!-- 播放类型统计折线图 -->
<script type="text/javascript">
$(function () {
var livFlowList=document.getElementById("livFlowList").value;
var vodFlowList=$("#vodFlowList").val(); //此处接收到的为一个string类型的变量
var yVodFlow =[]; //此处的数组为折线图里面需要的数据数组
var yLiveFlow = [];
var xMonth=[]; //自动生成的x轴坐标轴的数据元素
//去除两边的[],,,循环遍历list集合中的元素,并将其解析为js数据类型,,,由于是将list集合接收来的数据,两边带有【】号,需要将其删除
var test1 = livFlowList.substring(1,livFlowList.length-1); //在使用substring方法时,必须有一个变量去接,否则不会返回响应的值
var ss=test1.split(',');
for(var i=0; i<ss.length; i++){
yLiveFlow.push(parseFloat(ss[i]));//将字符串数组中的元素解析为js数字格式类型,并放入到数组中
} var test2=vodFlowList.substring(1,vodFlowList.length-1);
var tt=test2.split(',');
for(var h=0;h<tt.length; h++){
yVodFlow.push(parseFloat(tt[h]));
}
var flowMonthList=$("#flowMonthList").val();
var monthList=flowMonthList.substring(1,flowMonthList.length-1);
var gg=monthList.split(',');
for(var k=0; k<gg.length; k++){
xMonth.push(parseInt(gg[k]));
} $('#line_playType').highcharts({
title: {
text: '流量统计',
x: -20
},
credits: {
text: '',
href: ''
},
xAxis: {
categories:xMonth
},
yAxis: {
title: {
text: '流量(G)'
},
plotLines: [{
value: 0,
width: 1,
color: '#808080'
}]
},
tooltip: {
valueSuffix: 'G'
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'middle',
borderWidth: 0
},
series: [{
name: '直播流量',
data: yLiveFlow,
color:Highcharts.getOptions().colors[3]
},
{
name: '点播流量',
data:yVodFlow,
color:Highcharts.getOptions().colors[7]
}
]
});
});
</script>
此处需要注意的事项,都写在代码的注释里面,当将js数组类型的变量放入到data中时,折线图会自动解析数组中的元素个数,
并自动解析和展示。
js中接收到的数据,都是从java后台得到的数据,并将数据放入到jsp页面中,然后再js从jsp中获取值。
代码如下:
<input type="hidden" name="vodFlowList" id="vodFlowList" value="${vodFlowList }"/>
<input type="hidden" name="livFlowList" id="livFlowList" value="${livFlowList }"/>
<input type="hidden" name="flowMonthList" id="flowMonthList" value="${flowMonthList }"/>
之所以放入到jsp页面中,是为了实现在js中方便快捷的获取到数据。
现在展示出java后台获取数据部分的代码
//直播点播流量增长折线图数据统计
UserResourceMonthStatistics monthStatistics= new UserResourceMonthStatistics();
monthStatistics.setUserId(userId);
//从数据库查询展示数据的集合
List<UserResourceMonthStatistics> monthList=monthStatisticService.getResMonthStatisticsList(monthStatistics);
//由于要展示3组数据,所以new了三个集合,并将需要的数据分别放入到对应的集合中,然后再setAttribute到jsp
List<Double> livFlowList = new ArrayList<>();
List<Double> vodFlowList = new ArrayList<>();
List<String> flowMonthList = new ArrayList<>();
for (UserResourceMonthStatistics userStatistics : monthList)
{
long liveFlow2 = percentString(userStatistics.getLiveFlow()); //点播流量
double liveMonthFlow = chargeFlow(liveFlow2);
long vodFlow2 = percentString(userStatistics.getVodFlow());
double vodMonthFlow = chargeFlow(vodFlow2);
String month= userStatistics.getMonth();
flowMonthList.add(month);
livFlowList.add(liveMonthFlow);
vodFlowList.add(vodMonthFlow);
}
request.setAttribute("flowMonthList", flowMonthList);
request.setAttribute("livFlowList", livFlowList);
request.setAttribute("vodFlowList", vodFlowList);
在刚开始做的时候,一直在想如何直接从list集合中获取某一属性的集合值,在网上搜了很久,也没有搜到对应的方法,
于是写了循环,从而完成一个折线图的绘制。
绘制折线图,也可以用ajax的方式实现,其中主要的逻辑和数据处理都是放在客户端处理,思路和在服务端处理的思路是
一致的,用ajax请求到数据,一般该数据为一个集合,然后再js中循环该集合,并将需要的数据放入到数组中,然后将数组
提供给折线图插件。。。
java代码实现highchart与数据库数据结合完整案例分析(二)---折线图的更多相关文章
- java代码实现highchart与数据库数据结合完整案例分析(一)---饼状图
作者原创:转载请注明出处 在做项目的过程中,经常会用到统计数据,同时会用到highchart或echart进行数据展示,highchart是外国开发的数据统计图插件, echart是我们国家开发的数据 ...
- ajax实现highchart与数据库数据结合完整案例分析(三)---柱状折线图
作者原创,未经博主允许,不可转载 在前面分析和讲解了用java代码分别实现饼状图和折线图,在工作当中,也会遇到很多用ajax进行异步请求 实现highchart. 先展示一下实现的效果图: 用ajax ...
- jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行?
jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行? 因为在解析时最新解析的就是JA ...
- 阿里云资深DBA专家罗龙九:云数据库十大经典案例分析【转载】
阿里云资深DBA专家罗龙九:云数据库十大经典案例分析 2016-07-21 06:33 本文已获阿里云授权发布,转载具体要求见文末 摘要:本文根据阿里云资深DBA专家罗龙九在首届阿里巴巴在线峰会的&l ...
- MongoDB最简单的入门教程之三 使用Java代码往MongoDB里插入数据
前两篇教程我们介绍了如何搭建MongoDB的本地环境: MongoDB最简单的入门教程之一 环境搭建 以及如何用nodejs读取MongoDB里的记录: MongoDB最简单的入门教程之二 使用nod ...
- java代码定时备份mysql数据库及注意事项——基于 springboot
源码地址: https://gitee.com/kevin9401/BackUpDataBase git 拉取: https://gitee.com/kevin9401/BackUpDataBase. ...
- 《深入理解Java虚拟机》-----第5章 jvm调优案例分析与实战
案例分析 高性能硬件上的程序部署策略 例 如 ,一个15万PV/天左右的在线文档类型网站最近更换了硬件系统,新的硬件为4个CPU.16GB物理内存,操作系统为64位CentOS 5.4 , Resin ...
- 可视化数据matplotlib之安装与简单折线图
matplotlib是一个可视化数据的模块,安装前需要先安装Visual Studio Community:然后去https://pypi.python.org/pypi上查找matplotlib并下 ...
- 诊断Java代码中常见的数据库性能热点问题应该这么做!
“你的Java应用程序的性能是怎样诊断和优化的?不妨看看这两位西医的方子.如果你有更好疗效的药方,也欢迎在评论区告诉我们. 当我在帮助一些开发者或架构师分析及优化Java应用程序的性能时,关键往往不在 ...
随机推荐
- os模块学习+open行数
os模块的使用https://www.cnblogs.com/juandx/p/4962089.html 注意:新建和关闭文件,可以直接用,无需os模块 python中对文件.文件夹(文件操作函数)的 ...
- soapUI-Conditional Goto
1.1.1 Conditional Goto 1.1.1.1 概述 - Conditional Goto Conditional Goto TestStep包含任意数量的XPath/JSONPath ...
- Django实现cookie&session以及认证系统
COOKIE&SESSION 知识储备 由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生. cookie的工作原理是:由服务器产生内 ...
- 使用 MtVerify.h头文件 ,用的时候把他头文件的内容添加到项目
#include <windows.h> //windodws变量相关头文件 MtVerify.h的内容如下:#pragma comment( lib, "USER32&quo ...
- 使用TreeView加载XML文件
PS: 由于小弟初学编程,本文只写实现方式,代码写的不是很好请见谅! 1.需要读取的xml文档内容 2. 最终实现效果 3 貌似看起实现起来很复杂 但是想想还是挺简单 思路: 读取XML文档 →获 ...
- VS2010/MFC编程入门之三十六(工具栏:工具栏资源及CToolBar类)
上一节中鸡啄米讲了菜单及CMenu类的使用,这一节讲与菜单有密切联系的工具栏. 工具栏简介 工具栏一般位于主框架窗口的上部,菜单栏的下方,由一些带图片的按钮组成.当用户用鼠标单击工具栏上某个按钮时,程 ...
- zw版【转发·台湾nvp系列Delphi例程】HALCON SmallestRectangle2
zw版[转发·台湾nvp系列Delphi例程]HALCON SmallestRectangle2 procedure TForm1.Button1Click(Sender: TObject);var ...
- 成本安全硬件(二):RFID on PN532 之WINDOWS 环境应用
看了 低成本安全硬件(二):RFID on PN532之后,手上也有树莓派,于是下单买了个PN532 按文章方法,安装各类软件 ,折腾好好几天 还是不得行,LINUX 环境够乱啊 在网络 重新搜索,基 ...
- mybatis打印sql日志配置
<settings> <!-- 打印查询语句 --> <setting name="logImpl" value="STDOUT_LOGGI ...
- python getmtime() 最近修改文件内容的时间
import time import os def mm(): file_name = '1.txt' file_times_modified = time.localtime(os.path.get ...