Highcharts动态赋值学习
最近老大让做项目中的统计图表功能,需要使用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动态赋值学习的更多相关文章
- Java注解如何对属性动态赋值
学而不思则罔,思而不学则殆 前言 大家都用过Spring的@Value("xxx")注解,如果没有debug过源码的同学对这个操作还是一知半解,工作一年了学了反射学了注解,还是不会 ...
- URL动态赋值
url动态赋值: 指的是url中包含{selector},即花括号括起来的jQuery选择器,当提交该url时,框架会自动将selector对应元素的值替换到花括号所占区域. (感觉实现了一点类似el ...
- 使用 Attribute +反射 来对两个类之间动态赋值
看同事使用的 一个ORM 框架 中 有这样一个功能 通过特性(附加属性)的功能来 实现的两个类对象之间动态赋值的 功能 觉得这个功能不错,但是同事使用的 ORM 并不是我使用的 Dapper 所 ...
- Jquery为下拉列表动态赋值与取值,取索引
接触前端也不久对jquery用的也只是皮毛,写过去感觉能复用的发出来,大家指点下 1.下拉列表动态赋值 function initddlYear() { var mydate = new Date() ...
- Oracle游标动态赋值
1. oracle游标动态赋值的小例子 -- 实现1:动态给游标赋值 -- 实现2:游标用表的rowtype声明,但数据却只配置表一行的某些字段时,遍历游标时需fetch into到精确字段 CREA ...
- javascript如何解析json对javascript如何解析json对象并动态赋值到select列表象并动态赋值到select列表
原文 javascript如何解析json对象并动态赋值到select列表 JSON(JavaScriptObject Notation)一种简单的数据格式,比xml更轻巧.JSON是JavaScri ...
- CgLib动态代理学习【Spring AOP基础之一】
如果不了解JDK中proxy动态代理机制的可以先查看上篇文章的内容:Java动态代理学习[Spring AOP基础之一] 由于Java动态代理Proxy.newProxyInstance()的时候会发 ...
- C# 实体/集合差异比较,比较两个实体或集合值是否一样,将实体2的值动态赋值给实体1(名称一样的属性进行赋值)
/// <summary> /// 实体差异比较器 /// </summary> /// <param name="source">源版本实体& ...
- jQuery Distpicker插件 省市区三级联动 动态赋值修改地址
在获取创建页面数据后需要在编辑页面调取之前提交的数据,在使用这个插件后发现无法动态赋值,查找资料后发现需要先销毁实例,$(’#target’).distpicker(‘destroy’); 第一步 引 ...
随机推荐
- WPF DataGrid的分页实现
原理:其实分页功能的实现大家都清楚,无非就是把一个记录集通过运算来刷选里面对应页码的记录. 接来下我们再次添加新的代码 <Grid> <DataGrid Name="da ...
- shenyi 语录
[讲师]沈逸(65480539) 2016-06-08 14:58:42 会centos 转redhat是分分钟的事 [讲师]沈逸(65480539) 2016-06-08 14:58:54 查看 ...
- Css - 基础的css阴影效果
基本的css3阴影效果 width:971px; height:608px; border:1px solid #ccc; background-color:#fff; filter:progid:D ...
- yoman安装和使用
http://yeoman.io/ 安装到全局 sudo npm install -g yo 判断是否安装成 yo --version 常用命令 yo doctore yo --help 安装 ...
- APT 常用功能
apt-get install package 安装包 apt-get reinstall package 重新安装包 apt-get upgrade 更新已安装的包 #apt-get update ...
- JavaScript系列:模块化与链式编程
模块化:闭包和和函数作用域(JS没有块级作用域ES6之前)构造模块 var man=function(){ var age=12; return { getYear:function(){ retur ...
- 将JsonObject转换成HashMap
1.工具类: Utils.class: (1)简单的键值对map public class Utils { public static String getRaw(Context context, i ...
- hdu1078 记忆化搜索
/* hdu 1078 QAQ记忆化搜索 其实还是搜索..因为里面开了一个数组这样可以省时间 (dp[x][y]大于0就不用算了直接返回值) */ #include<stdio.h> #i ...
- NV Maxwell architecture
按照NVIDIA的路线图来看,GTX 600以及GTX 700系列所采用的Kepler架构已经垂垂老矣,最早在明年第一季度,其继任者Maxwell架构可能就会和我们正式见面了.目前外媒已经放出了关于M ...
- PHP 错误与异常 笔记与总结(16 )自定义异常处理器
可以使用自定义异常处理器来处理所有未捕获的异常(没有用 try/catch 捕获的异常). set_exception_handler():设置一个用户定义的异常处理函数,当一个未捕获的异常发生时所调 ...