最近老大让做项目中的统计图表功能,需要使用highcharts这个插件,弄出来了两种类型的图表动态赋值的实现,首先贴上中文网的官网和api地址,使用这个英语不好的同学肯定会用到的:

中文网官网:http://www.hcharts.cn/

中文网API:http://www.hcharts.cn/api/index.php#Series

我后台用的是java,主要是后台封装数据后放到json里面,然后在前台获取后进行调用。

到现在,总共弄出来了折线图和饼图的动态赋值的功能:

这个是折线图的前台数据:没有使用api来进行赋值,而是直接处理成需要的data和name然后直接写到name和data后面去的,不够灵活
关于下面代码中的ajax里面的js数据看不懂的请请教专业js同学,我的也是别人帮忙写的
1 $.ajax({
type : 'POST',
dataType : 'JSON',
url: 'admin/showtable/data',
success:function(result){
/* line---data */
var lineresult = result.worklog;
console.log(lineresult);
var xdata = [];
var series = [];
var temp = {};
for (var i in lineresult) {
xdata.push(lineresult[i]["worklogdate"]);
if (!temp[lineresult[i].worktype]) {
temp[lineresult[i].worktype] = [lineresult[i]["SUM(worktime)"]];
} else {
temp[lineresult[i].worktype].push(lineresult[i]["SUM(worktime)"]);
}
}
for (var i in temp) {
series.push({"name":i,"data":temp[i]});
}
console.log(series); //获取series里面的name和data
console.log(xdata); //获取x轴的日期
console.log(temp);
                         /*设置饼图数据*/
var pieresult = result.dataforworktype;
console.log(pieresult);
var chart = $('#pie').highcharts();
chart.series[0].setData(pieresult); //折线图
$('#line').highcharts({ credits: {
enabled: false, //去掉版权信息,就是右下角显示的highchars的网站链接 也可以显示成自己的链接,具体请搜索api
},
chart: {
renderTo:'line',             
type: 'line' //指定图表的类型,默认是折线图(line)
},
title: {
// text: '工时统计', //指定图表标题
text: '<span style="font-size:24px;font-weight:bolder;color:Black;">工时统计</span>', //图表标题可以设置为html标签 方便设置样式
x: -50
}, xAxis: { //指定x轴分组
type: 'date',
showEmpty: false,
startOnTick: false,
categories: xdata,
labels: {
rotation: -90, //竖直放
rotation: -45 //45度倾斜
},
dateTimeLabelFormats:{
year: '%Y',
month: '%b \ %y',
day: '%e. %b'
}, },
yAxis: {
title: {
text: 'XXXX' //指定y轴的标题(显示工时的数量每1个小时为一格,依次递增)
},
categories:
['0','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24'],
min:'0',
plotLines: [{ //Y轴的数目对应的横线的样式 标线属性
value: 0, //Y轴显示的数字
width: 1, //Y轴上数字对应水平线的宽度
color: '#808080' //水平线的颜色
}]
},
tooltip: { //数据点的提示框
valueSuffix: 'h' //后缀
},
legend: { //图例
layout: 'horizontal', //水平
itemDistance: 50, //图例水平间距
align: 'center', //样式居中
verticalAlign: 'bottom', //垂直对齐 top顶部对齐,middle中间对齐,bottom底部对齐
borderWidth: 0
},
series: series
});
}
});

这里是折线图需要的series封装的数据类型,直接放到插件中series后面可以使用,在图表中name显示的折线的种类,data显示为折线中的节点

/******************************  以下为饼图的数据   ******************************/

 //饼图
$('#pie').highcharts({
credits: {
enabled: false, //去掉版权信息
},
chart: {
plotBackgroundColor: null, //绘制图形区域的背景颜色
plotBorderWidth: null, //边框宽度
plotShadow: false, //绘制区投影
type: 'pie'
},
title: {
text: 'xxxx'
},
tooltip: {
pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>' //鼠标放到图形上面后显示框中的提示数据
},
plotOptions: {
pie: {
allowPointSelect: true, //选中某块区域是否允许分离
cursor: 'pointer', //更换鼠标指针样式
dataLabels: {
enabled: true, //是否直接呈现数据 也就是外围显示数据与否
//format: '<b>{point.name}</b>: {series.percentage:.1f} ', //这里的意思是饼图周围显示的数据类型格式,默认的demo里面显示的是百分比,我下面使用的formatter配置,是使用了一个函数来进行格式化,基本通用的
formatter:function(index){
return '<b>'+ this.point.name +'</b>: '+ Highcharts.numberFormat(this.y, 1, '.')+'h';
},
style: {
color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black' //设置饼图周边显示的数据的样式
}
},
showInLegend: true //显示图例
}
},
series:
[{
name: '时间', //鼠标放到图标上显示框中的单位提示字符
data: []              //数据设置为空,可以使用api赋值,饼图的数据设置请看上图:折线图配置部分的ajax中的特殊颜色标记部分
}]
});

下面是饼图需要封装的数据格式:name和y 这里是我在后台获取数据的时候讲select后面的数据设置的别名,设置为这样的话更方便highchars来进行读取

最后附上一张效果图:

折线图:

  

饼图:

欢迎高手指教和新手交流,有事情留言

Highcharts动态赋值学习的更多相关文章

  1. Java注解如何对属性动态赋值

    学而不思则罔,思而不学则殆 前言 大家都用过Spring的@Value("xxx")注解,如果没有debug过源码的同学对这个操作还是一知半解,工作一年了学了反射学了注解,还是不会 ...

  2. URL动态赋值

    url动态赋值: 指的是url中包含{selector},即花括号括起来的jQuery选择器,当提交该url时,框架会自动将selector对应元素的值替换到花括号所占区域. (感觉实现了一点类似el ...

  3. 使用 Attribute +反射 来对两个类之间动态赋值

    看同事使用的 一个ORM 框架 中 有这样一个功能  通过特性(附加属性)的功能来 实现的两个类对象之间动态赋值的 功能 觉得这个功能不错,但是同事使用的 ORM 并不是我使用的  Dapper  所 ...

  4. Jquery为下拉列表动态赋值与取值,取索引

    接触前端也不久对jquery用的也只是皮毛,写过去感觉能复用的发出来,大家指点下 1.下拉列表动态赋值 function initddlYear() { var mydate = new Date() ...

  5. Oracle游标动态赋值

    1. oracle游标动态赋值的小例子 -- 实现1:动态给游标赋值 -- 实现2:游标用表的rowtype声明,但数据却只配置表一行的某些字段时,遍历游标时需fetch into到精确字段 CREA ...

  6. javascript如何解析json对javascript如何解析json对象并动态赋值到select列表象并动态赋值到select列表

    原文 javascript如何解析json对象并动态赋值到select列表 JSON(JavaScriptObject Notation)一种简单的数据格式,比xml更轻巧.JSON是JavaScri ...

  7. CgLib动态代理学习【Spring AOP基础之一】

    如果不了解JDK中proxy动态代理机制的可以先查看上篇文章的内容:Java动态代理学习[Spring AOP基础之一] 由于Java动态代理Proxy.newProxyInstance()的时候会发 ...

  8. C# 实体/集合差异比较,比较两个实体或集合值是否一样,将实体2的值动态赋值给实体1(名称一样的属性进行赋值)

    /// <summary> /// 实体差异比较器 /// </summary> /// <param name="source">源版本实体& ...

  9. jQuery Distpicker插件 省市区三级联动 动态赋值修改地址

    在获取创建页面数据后需要在编辑页面调取之前提交的数据,在使用这个插件后发现无法动态赋值,查找资料后发现需要先销毁实例,$(’#target’).distpicker(‘destroy’); 第一步 引 ...

随机推荐

  1. diff和patch配合使用(转载备用)

    Linux下diff与patch命令的配合使用 在Linux下,diff与patch命令配合使用可以进行简单的代码维护工作. [A] diffdiff命令用于比较文件的差异,可以用于制作patch文件 ...

  2. Leetcode | Minimum/Maximum Depth of Binary Tree

    Minimum Depth of Binary Tree Given a binary tree, find its minimum depth. The minimum depth is the n ...

  3. nodejs:grunt使用合并压缩的基本使用

    一.模块化历史 1,nodejs出现:主要解决后端js规范 2,commonjs:这个组织出来一些服务器规范 3,后端规范commonjs应用升级到前端commonjs2:cmd规范(seajs)和完 ...

  4. HDU 1069 基础动态规划+排序

    题意 给出n种立方体石头 当且仅当一块石头的底部宽度长度都小于一块石头的时候才能放在上面 问最高能放多高?石头不限数目 然而同样一种石头采用同样的摆放方式 两快相同石头一定无法进行放置 所以 一块石头 ...

  5. Apache Spark源码走读之3 -- Task运行期之函数调用关系分析

    欢迎转载,转载请注明出处,徽沪一郎. 概要 本篇主要阐述在TaskRunner中执行的task其业务逻辑是如何被调用到的,另外试图讲清楚运行着的task其输入的数据从哪获取,处理的结果返回到哪里,如何 ...

  6. DDL DML DCL SQL

    https://dev.mysql.com/doc/refman/5.7/en/glossary.html#glos_ddl SQL The Structured Query Language tha ...

  7. prototype linkage can reduce object initialization time and memory consumption

    //对象是可变的键控集合, //"numbers, strings, booleans (true and false), null, and undefined" 不是对象的解释 ...

  8. Types of compression algorithms

    http://www.html5rocks.com/en/tutorials/speed/img-compression/ Types of compression algorithms There ...

  9. mysql查询昨天本周上周上月

    昨天 $yestoday = date("Y-m-d 00:00:00",strtotime('-1day'));$today = date("Y-m-d 00:00:0 ...

  10. AP_总体业务及方案

    AP关键业务点说明 关键业务点 说明 预付款余额收回 1. 在应付款管理系统中输入一张虚拟发票,该发票的目的是在系统中冲减对供应商的预付款额,其金额等于预付款的未核销金额,供应商为原供应商. 借:其他 ...