作者原创:转载请注明出处

在做项目的过程中,经常会用到统计数据,同时会用到highchart或echart进行数据展示,highchart是外国开发的数据统计图插件,

echart是我们国家开发的数据统计插件,我比较喜欢highchart的统计插件,在这里展示的也是highchart插件的应用。

应用highchart插件并不难,找到官方文档,copy代码,就能把图标呈现出来,难的是如何将本地数据库中的数据与其结合。因此,

在这里主要分析将数据库数据和插件结合的过程,我用的是java代码实现的。下面是实现的比例图:

先展示js代码

<script type="text/javascript">
$(function () {
var livePercent=document.getElementById("livePercent").value;
var vodPercent=$("#vodPercent").val();
var playCount=$("#playCount").val();
// alert(typeof());
// alert("vodPercent:"+vodPercent+"######livePercent="+livePercent);
$('#pieChart_res').highcharts({
chart: {
plotBackgroundColor: null,
plotBorderWidth: null,
plotShadow: false
},
title: {
text: '播放统计比例图'
},
credits: {
text: '',
href: ''
},
tooltip: {
headerFormat: '{series.name}<br>',
pointFormat: '{point.name}: <b>{point.percentage:.1f}%</b>'
},
plotOptions: {
pie: {
allowPointSelect: true,
cursor: 'pointer',
dataLabels: {
enabled: true,
format:'{point.description}',
distance:-140
},
showInLegend:true
}
},
series: [{ type: 'pie',
name: '该资源访问量占比',
data: [
['直播访问量占比',parseFloat(livePercent)],
{
name:'点播访问量占比',
y:parseFloat(vodPercent),
sliced: true,
selected: true,
description:'总播放数'+playCount
}
]
}]
});
});
</script>

上面的代码和highchart中API的代码基本一致,主要的思想是:需要什么数据,提供什么数据。

所以我在后台中已经将数据塞到jsp页面中,并在js中解析出来,将数据提供给统计图。

######特别要注意的是,从jsp获取到的属性值(int或long,或double,float),当我用js变量var来接收的时候,它统统变成了

string类型的变量,所以在供给数据的时候,一定要解析为js中的数字类型格式,此处用到的方法为:parseLong(),或parseFloa();

这里调了很长时间,由于数据类型的不匹配,统计图在调试的过程中,老是不显示。要长记性。。。。。

此处为将后台获取到的数据放在页面中的代码展示(在页面中均是隐藏显示):

<input type="hidden" name="liveTotalCount" id="livePercent" value="${liveCountPercent }">
<input type="hidden" name="vodTotalCount" id="vodPercent" value="${vodCountPercent }">

之所以将其放入页面中,是为了方便接收数据。
最关键的地方来了,java代码获取统计图所需数据:

//从数据库查询数据
UserPlaySummaryStatistics playStatistics=userPlayService.getUserPlayStatistics(playSummaryStatistics); String liveTotalCount= playStatistics.getLiveTotalCount();
String vodTotalCount= playStatistics.getVodTotalCount();
//将获取到的数据类型转化为long类型
long liveCount=percentString(playStatistics.getLiveTotalCount());//A站总次数
long vodCount=percentString(playStatistics.getVodTotalCount());//B站总次数 //计算百分比,百分比为double类型,,,,,
double livePercent = (double)liveCount/ (liveCount+vodCount);
DecimalFormat format = new DecimalFormat("0.00%");
String liveCountPercent = format.format(livePercent);
System.out.println("liveCountPercent"+liveCountPercent); double vodPercent = (double)vodCount/ (liveCount+vodCount);
DecimalFormat format1 = new DecimalFormat("0.00%");
String vodCountPercent = format1.format(vodPercent);
System.out.println("vodCountPercent"+vodCountPercent); request.setAttribute("playCount", playCount);
request.setAttribute("liveCountPercent", liveCountPercent);
request.setAttribute("vodCountPercent", vodCountPercent);

主要的代码部分就是以上,这样就可以轻而易举的实现一个统计图,而且加载的数据比较快。

也有用ajax实现数据请求的,过程和逻辑也比较复杂,后面我也会将我用ajax实现统计图的代码案例分享出来,已做笔记。

java代码实现highchart与数据库数据结合完整案例分析(一)---饼状图的更多相关文章

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

    作者原创:未经博主允许不许转载 在上一篇的博客中,展示和分析了如何做一个饼状图,有疑问可以参考上一篇博客. 现在分析和展示折线图的绘制和案例分析, 先展示效果图: 与饼状图不同的是,折线图展现更多的数 ...

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

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

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

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

  4. C#+JQuery+.Ashx+百度Echarts实现全国省市地图和饼状图动态数据图形报表的统计

    在目前的一个项目中,需要用到报表表现数据,这些数据有多个维度,需要同时表现出来,同时可能会有大量数据呈现的需求,经过几轮挑选,最终选择了百度的echarts作为报表基础类库.echarts功能强大,界 ...

  5. java 柱状图、折线图、饼状图

    1.绘制柱状图: //BarChartTool工具类代码 package GUIview; import HibernateTool.HibernateTools; import ProductCla ...

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

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

  7. Java创建柱状图及饼状图

    Java创建图表其实还是很方便的,但是要引入相关的jar包.如下 jfreechart.jar jcommon,jar gnujaxp.jar 其中最主要的是jfreechart.jar. 下面就让我 ...

  8. 基于matplotlib的数据可视化 - 饼状图pie

    绘制饼状图的基本语法 创建数组 x 的饼图,每个楔形的面积由 x / sum(x) 决定: 若 sum(x) < 1,则 x 数组不会被标准化,x 值即为楔形区域面积占比.注意,该种情况会出现 ...

  9. 一款基于jQuery饼状图比例分布数据报表

    今天给大家带来一款基于jQuery饼状图比例分布数据报表.这款报表插件适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗.效果图如下: 在线预览  ...

随机推荐

  1. 数据库级别DDL操作监控审计、数据库触发器/服务器触发器

    关键词:数据库触发器/服务器触发器  ,数据库级别DDL操作监控审计,禁止修改登录名密码 [1]数据库级别DDL操作监控审计 转自2012示例库,只能数据库级别,不能实例级别 use database ...

  2. mysql 数据库数据订正

    mysql 数据库数据订正 http://blog.itpub.net/22664653/viewspace-717175/ 工作过程中时常遇到数据订正的需求,该操作本身不难.操作时要求能够保持回滚~ ...

  3. 1.keras实现-->使用预训练的卷积神经网络(VGG16)

    VGG16内置于Keras,可以通过keras.applications模块中导入. --------------------------------------------------------将 ...

  4. Set keys=Map.keyset()

    目前只有Map和Properties要用到keyset()方法 Properties:指JDBC时候的连接数据库,把数据库的参数提取到配置文件时用到, 通俗的讲,Properties专门用来读取配置文 ...

  5. liferay增删改简单小练习

    liferay简单增删改 大家都知道,我们每学习一项技能的时候,都会做一些简单的小实例,来检验我们学习成果,这个也不例外. 我建议大家学习完三大框架之后再来看这个demo. 首先:先说一下,零碎的知识 ...

  6. 植物大战僵尸作弊器源代码(MFC版)

    控制版使用不太方便,此MFC版与控制台版内容一样.具体可以参考前面.此处只附源代码,不加以说明.......... 头文件 // jsMFCDlg.h : 头文件 // #pragma once // ...

  7. Protobuffer简介c#

    一.Protobuffer和json深度对比 JSON相信大家都知道是什么东西,如果不知道,那可就真的OUT了,GOOGLE一下去.这里就不介绍啥的了. Protobuffer大家估计就很少听说了,但 ...

  8. 710 Random Pick with Blacklist

    1. 问题 给定一个黑名单,包含[0, N)的一些数,从[0, N)之间的非黑名单数中随机采样一个值. 2. 思路 字典映射 (1)计算黑名单数的长度,记作B,因为已经排除掉了B个元素,所以最后是从N ...

  9. 【转】Java中Synchronized的用法

    <编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程>一文详细讲述了线程.进程的关系及在操作系统中的表现,这是多线程学习必须了解的基础.本文将接着讲一下Java线程同步中的一 ...

  10. Python3 简明教程

    Python是由吉多·范罗苏姆(Guido Van Rossum)在90年代早期设计.它是如今最常用的编程 语言之一.它的语法简洁且优美,几乎就是可执行的伪代码. 注意:这篇教程是特别为Python3 ...