作者原创:未经博主允许不许转载

在上一篇的博客中,展示和分析了如何做一个饼状图,有疑问可以参考上一篇博客。

现在分析和展示折线图的绘制和案例分析,

先展示效果图:

与饼状图不同的是,折线图展现更多的数据,也会体现出更多的自动性。

先展示一下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与数据库数据结合完整案例分析(二)---折线图的更多相关文章

  1. java代码实现highchart与数据库数据结合完整案例分析(一)---饼状图

    作者原创:转载请注明出处 在做项目的过程中,经常会用到统计数据,同时会用到highchart或echart进行数据展示,highchart是外国开发的数据统计图插件, echart是我们国家开发的数据 ...

  2. ajax实现highchart与数据库数据结合完整案例分析(三)---柱状折线图

    作者原创,未经博主允许,不可转载 在前面分析和讲解了用java代码分别实现饼状图和折线图,在工作当中,也会遇到很多用ajax进行异步请求 实现highchart. 先展示一下实现的效果图: 用ajax ...

  3. jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行?

    jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行? 因为在解析时最新解析的就是JA ...

  4. 阿里云资深DBA专家罗龙九:云数据库十大经典案例分析【转载】

    阿里云资深DBA专家罗龙九:云数据库十大经典案例分析 2016-07-21 06:33 本文已获阿里云授权发布,转载具体要求见文末 摘要:本文根据阿里云资深DBA专家罗龙九在首届阿里巴巴在线峰会的&l ...

  5. MongoDB最简单的入门教程之三 使用Java代码往MongoDB里插入数据

    前两篇教程我们介绍了如何搭建MongoDB的本地环境: MongoDB最简单的入门教程之一 环境搭建 以及如何用nodejs读取MongoDB里的记录: MongoDB最简单的入门教程之二 使用nod ...

  6. java代码定时备份mysql数据库及注意事项——基于 springboot

    源码地址: https://gitee.com/kevin9401/BackUpDataBase git 拉取: https://gitee.com/kevin9401/BackUpDataBase. ...

  7. 《深入理解Java虚拟机》-----第5章 jvm调优案例分析与实战

    案例分析 高性能硬件上的程序部署策略 例 如 ,一个15万PV/天左右的在线文档类型网站最近更换了硬件系统,新的硬件为4个CPU.16GB物理内存,操作系统为64位CentOS 5.4 , Resin ...

  8. 可视化数据matplotlib之安装与简单折线图

    matplotlib是一个可视化数据的模块,安装前需要先安装Visual Studio Community:然后去https://pypi.python.org/pypi上查找matplotlib并下 ...

  9. 诊断Java代码中常见的数据库性能热点问题应该这么做!

    “你的Java应用程序的性能是怎样诊断和优化的?不妨看看这两位西医的方子.如果你有更好疗效的药方,也欢迎在评论区告诉我们. 当我在帮助一些开发者或架构师分析及优化Java应用程序的性能时,关键往往不在 ...

随机推荐

  1. pycharm中python模板代码自动生成

    # -*- coding: utf-8 -*- """ ------------------------------------------------- File Na ...

  2. (3.2)mysql基础深入——mysql源码阅读工具安装与应用

    (3.2)mysql基础深入——mysql源码阅读工具安装与应用 关键字:mysql源码阅读工具 工具列举:一般多用[1][2][3]吧 [1]source insight [2]写字板/记事本 UE ...

  3. 前端 HTML body标签相关内容 常用标签 图片标签 <img/>

    图片标签 <img/> 一个网页除了有文字,还会有图片.我们使用<img/>标签在网页中插入图片. <img/> 是单闭合标签 语法:<img src=&qu ...

  4. 什么是 Delta 文件

    什么是 Delta 文件 Delta 文件应用很广泛,特别是在数据库领域 What Is a Delta File? During most computer operations, copying, ...

  5. UVM中factory机制的使用

    UVM中的factory机制一般用在sequence的重载,尤其是virtual sequence.当Test_case变化时,通过virtual sequence的重载,可以很容易构建新的测试. 因 ...

  6. jQuery常用操作

    jQuery jQuery是一个轻量级的JS库,是一个被封装好的JS文件,提供了更为简便的元素操作方式,jQuery封装了DOM. 使用jQuery 引入jQuery文件 <scrtipt sr ...

  7. 论文笔记:语音情感识别(五)语音特征集之eGeMAPS,ComParE,09IS,BoAW

    一:LLDs特征和HSFs特征 (1)首先区分一下frame和utterance,frame就是一帧语音.utterance是一段语音,是比帧高一级的语音单位,通常指一句话,一个语音样本.uttera ...

  8. pandas练习(二)------ 数据过滤与排序

    数据过滤与排序------探索2012欧洲杯数据 相关数据见(github) 步骤1 - 导入pandas库 import pandas as pd 步骤2 - 数据集 path2 = ". ...

  9. Java Callable接口——有返回值的线程

    实际开发过程中,我们常常需要等待一批线程都返回结果后,才能继续执行.<线程等待——CountDownLatch使用>中我们介绍了CountDownLatch的使用,通过使用CountDow ...

  10. linux常用命令:chmod 命令

    chmod命令用于改变linux系统文件或目录的访问权限.用它控制文件或目录的访问权限.该命令有两种用法.一种是包含字母和操作符表达式的文字设定法:另一种是包含数字的数字设定法. Linux系统中的每 ...