在很早之前就介绍过图表插件Highcharts的使用了,在2014年的随笔《基于MVC4+EasyUI的Web开发框架经验总结(4)--使用图表控件Highcharts》,这里基本上都介绍的比较完整,基本的设置也没有太大的差异,本篇介绍的是基于Bootstrap开发框架的界面处理,以及对图表插件Highcharts的其他模块,如柱状图,线图等其他样式的信息进行动态设置,以期达到利用数据库的数据,方便动态设置显示出来。

1、Bootstrap框架图标的展示

饼图的数据展示界面效果如下所示

柱状图以及其他曲线图展示效果如下所示。

使用这些图表功能强,我们一般需要在页面里面引入对应的JS+CSS

2、使用脚本动态设置图表的数据

默认的案例,这些数据都是直接绑定在里面的,有时候我们需要动态设置,那么需要分析好对应的数据属性,以及设置的API,才能正常进行显示。

以饼图为例,我们需要分析它的数据结构,一般是Series里面的Data数据格式,不同的图表样式需要的数据结构不太一样,对于图表而已,它的数据格式如下所示。

另外也可以使用key、Value方式的定义格式,如下数据所示。

那么,有了这些了解,我们就可以通过Ajax方式,动态从数据库里面获取数据,并绑定在界面上显示即可。

首先我们定义好界面上的一个图表展示控件DIV层,如下代码所示。

<div class="tab-char" id="container1" style="height: 300px;max-width:500px"></div>

然后通过JS动态创建对应的图表对象,并设置图表的数据即可。

       var chart1 = new Highcharts.Chart({chart: {renderTo: "container1",plotBackgroundColor: null,plotBorderWidth: null,plotShadow: false,},title: {text: '集团分子公司人员组成'},tooltip: {pointFormat: '{series.name}: <b>{point.y}</b>'},plotOptions: {pie: {allowPointSelect: true,cursor: 'pointer',dataLabels: {enabled: true,format: '<b>{point.name}</b>: {point.percentage:.1f} %',style: {color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'}},//showInLegend: true
                }},series: [{type: 'pie',name: '人员数量',data: []}]});

动态构建数据是通过Ajax方式实现的,如下所示。

        //通过Ajax获取图表1数据$.ajaxSettings.async = false;var data1 = [];$.getJSON("/User/GetCompanyUserCountJson", function (dict) {                for (var key in dict) {if (dict.hasOwnProperty(key)) {data1.push([key, dict[key]]);}};chart1.series[0].setData(data1);});

这里值得注意的是,我们获取一个图表对象,是通过下面代码方式获取才行

 var chart1 = new Highcharts.Chart({

这种方式可以获得对应的chart1对象,并进行设置图表属性或者调用API接口。

又如对于传入一个数组对象的图表

它的动态设置数据的代码如下所示。

        var chart4 = new Highcharts.Chart({chart: {renderTo: 'container4',type: 'column',margin: 75,options3d: {enabled: true,alpha: 15,beta: 15,depth: 50,viewDistance: 25}},title: {text: 'Chart rotation demo'},subtitle: {text: 'Test options by dragging the sliders below'},plotOptions: {column: {depth: 25}},series: [{ data: null//[29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
                }]});//模拟动态设置,chartData数据可以通过Ajax动态获取var chartData = [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4];chart4.series[0].setData(chartData);

如果对于柱状图的数据,我们又是需要分析它的数据结构,然后进行相应的数据的

柱状图的数据格式大概如下所示。

完整的柱状图JS对象处理代码如下所示。

        //柱状图的展示var linechart1 = new Highcharts.Chart({chart: {renderTo: 'lineContainer1',type: 'column',},title: {text: '销售出货日报表'},xAxis: {categories: []//['Apples', 'Oranges', 'Pears', 'Grapes', 'Bananas']
            },yAxis: {allowDecimals: false,min: 0,title: {text: '销售金额'}},tooltip: {formatter: function () {return '<b>' + this.x + '</b><br/>' +this.series.name + ': ' + this.y + '<br/>' +'Total: ' + this.point.stackTotal;}},plotOptions: {column: {stacking: 'normal'}},series: [//{//    name: 'John',//    data: [5, 3, 4, 7, 2],//    stack: 'male'//}, {//    name: 'Joe',//    data: [3, 4, 4, 2, 5],//    stack: 'male'//}, {//    name: 'Jane',//    data: [2, 5, 6, 2, 1],//    stack: 'female'//}, {//    name: 'Janet',//    data: [3, 0, 4, 4, 3],//    stack: 'female'//}
            ]});

我们上面注释掉的 categories 和 series 数据,就是为了让我们方便通过JS脚本动态添加进去,实现图标数据的动态化设置的。

例如对于销售出货数据的统计,我们模拟的部分数据来进行展示。

        //设置数据,这里可以通过JSON获取var category = ['2018-7-1', '2018-7-2', '2018-7-3', '2018-7-4', '2018-7-5'];var seriesData = [{name: 'AB',data: [500, 300, 400, 700, 200]}, {name: 'BC',data: [300, 400, 400, 200, 500]}, {name: 'CD',data: [200, 500, 600, 200, 100]}, {name: 'EF',data: [300, 0, 400, 400, 300]}];//先移除选来的series对象,然后加入while (linechart1.series.length > 0) {linechart1.series[0].remove(true);}for (var i = 0; i < seriesData.length; i++) {//加入categorieslinechart1.xAxis[0].setCategories(category);//加入series
            linechart1.addSeries(seriesData[i]);}

通过这样的处理,我们的数据就可以实现动态的显示了。

其他的图表也是通过类似的方式,通过获取到对应的图表对象,然后动态构建数据,并将数据设置到对应的图表属性上即可。

这样处理方式的差异,我们也可以参考下官网提供的一些属性或者接口的定义来进行处理,本篇案例也是综合了很多其他例子的说明进行测试,并获得正常的数据展示效果。

本篇主要介绍Highcharts插件的动态设置属性的处理,对于其他图表插件,如EChart等也是一个很好的参考,比较图表的数据格式都是很接近的。

转载于:https://www.cnblogs.com/wuhuacong/p/9359103.html

图表插件Highcharts的动态化赋值,实现图表数据的动态化设置显示相关推荐

  1. JQuery图表插件Highcharts示例教程

    JQuery图表插件Highcharts示例教程,先上图,大伙Show一下效果:先上三个图,分别是曲线.柱状.扇形. 图表中的数据纯属于DEMO的测试数据,没有实际用意.下面讲下大致的实现步骤 第一步 ...

  2. jquery饼状图插件的指引线_JQuery图表插件Highcharts示例教程

    JQuery图表插件Highcharts示例教程,先上图,大伙Show一下效果:先上三个图,分别是曲线.柱状.扇形. 图表中的数据纯属于DEMO的测试数据,没有实际用意.下面讲下大致的实现步骤 第一步 ...

  3. 【jQuery】兼容IE6的图表插件Highcharts

    在网页中有时候需要画出统计图,尤其是一些OA系统中,这样能够给各位看官一个直观的数据显示.图表用很多东西都能画出来,比如JSP可以利用JAVA本身就有的绘图函数,php有jpgraph插件,具体请看& ...

  4. 数据呈现图表插件Highcharts介绍+图表联动案例

    由于项目需要,学习并使用了Highcharts图表插件,这是一款功能强大.开源.美观.图表丰富.兼容绝大多数浏览器的纯js图表库插件. Highcharts简介 下边的介绍来自Highcharts中文 ...

  5. html 圆圈图表插件,10款强大的JavaScript图表图形插件

    网上有很多用于绘制图表图形的免费JavaScript插件和图表库,这类插件大量出现的原因,一是人们不再依赖于Flash,二是浏览器和精密的计算使呈现实时数据变得容易,而且各种向量绘图技术像VML.SV ...

  6. html 圆圈图表插件,10款HTML5动画图表插件

    创建一个HTML5网页图表应用已经非常简单,利用Canvas更是能绘制出绚丽的动画效果,也就是说你的HTML5图表能动起来,给人不一样的用户体验.本文就主要来分享一些最常用的HTML5图表插件,不仅外 ...

  7. 前端 环形统计_10款jQuery实现的环形百分比图表插件

    1.jQuery实现的环形百分比图表插件 这是一款非常富有创意的jQuery图表插件特效源码,这款jQuery环形百分比图表插件有以下特点:1.图表外观是环形的,因此也十分特别.2.图表数据有百分比显 ...

  8. echartsjs上证指数k线图表插件

    下载地址 基于echarts.js图表插件实现的股票k线图表,上证指数图表,K线走势图,K线分析图表代码. dd:

  9. DataGear 自定义数据可视化图表插件

    DataGear内置的70余种图表(折线图.柱状图.饼图.散点图.雷达图.地图.桑基图.K线图.箱形图.路径图等等),都是以图表插件的形式提供的,当这些内置图表无法满足应用需求时,则可以通过自定义图表 ...

最新文章

  1. 如何统计博客园的个人博客访问量
  2. 【推荐】LSI(latent semantic indexing) 完美教程
  3. python写内存挂_编写高效内存Python代码的3个技巧
  4. 【数据库学习笔记】——创建数据库连接对象connection
  5. mysql 钩子_面试官: 什么是 Hook (钩子) 线程以及应用场景?
  6. Vue学习之ref属性
  7. Zookeeper概念学习系列之zookeeper是什么?
  8. hdu 6351 Beautiful Now
  9. 取消360导航作为浏览器访问首页
  10. 一元四次方程c语言程序编写,一元高次方程数值解法C程序实现探讨..doc
  11. QQ空间批量删除留言
  12. python列表的事例_python列表使用实例
  13. JAVA自学-day14-正则表达式、Math类、Random类、System、BigInteger、BigDecimal、Date/DateFormat、Calendar
  14. endnote使用方法大全,endnote教程
  15. Origin的基础实验数据处理
  16. 不忘历史、维护中国海权
  17. NB-IoT和eMTC对比
  18. 前端程序员快速画原型的方法在这里
  19. java实现计算器_java高级计算器的实现
  20. 1077: 空心菱形

热门文章

  1. pymysql的安装
  2. Xmind settings lower
  3. 微信小程序:一个json帮你完成分享朋友圈图片
  4. Python自动化开发学习22-Django上
  5. CDN预热与刷新在促销活动中的应用
  6. 关于 Python 列表操作,最常见问答Top10
  7. keytool 错误:java.to.FileNotFoundException:
  8. Python自动化测试 (九)urllib2 发送HTTP Request
  9. 在C#程序设计中使用Win32 API
  10. android 检测字符串是否为合法域名