Highcharts使用简例及异步动态读取数据


Posted in Javascript onDecember 30, 2015

Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表,并且免费提供给个人学习、个人网站和非商业用途使用。HighCharts支持的图表类型有曲线图、区域图、柱状图、饼状图、散状点图和综合图表。

第一部分:在head之间加载两个JS库。

<script src="html/js/jquery.js"></script>
<script src="html/js/chart/highcharts.js"></script>

可以到http://www.hcharts.cn/ 下载,有相关教程和使用说明文档。

英文好的可以去官网:http://www.highcharts.com/

第二部分:JS代码

//定义一个Highcharts的变量,初始值为null
var oChart = null;
//定义oChart的布局环境
//布局环境组成:X轴、Y轴、数据显示、图标标题
var oOptions = { 
 //设置图表关联显示块和图形样式
 chart: { 
  renderTo: 'container', //设置显示的页面块
  //type:'line'    //设置显示的方式
  type: 'column'
 },
 //图标标题
 title: { 
  text: '图表展示范例', //设置标题
  //text: null, //设置null则不显示标题
 },
 //x轴
 xAxis: {
  title: {
   text: 'X 轴 标 题'
  },
  categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] 
 },
 //y轴
 yAxis: {
  title: { text: 'Y 轴 标 题' }, //设置Y轴标题关闭
 },
 //数据列
 series: [{
  data:[120,360,560,60,360,160,40,360,60,230,230,300]
  }] 
}; 
$(document).ready(function(){
 oChart = new Highcharts.Chart(oOptions);
 //异步添加第2条数据列
 LoadSerie_Ajax();
}); 
//异步读取数据并加载到图表
function LoadSerie_Ajax() { 
  oChart.showLoading(); 
  $.ajax({ 
   url : 'ajax/get_value.aspx',
   type : 'POST',
   dataType : 'json',
   async : false, //同步处理后面才能处理新添加的series
   contentType: "application/x-www-form-urlencoded; charset=utf-8", 
   success : function(rntData){
     var oSeries = {
     name: "第二条",
     data: rntData.rows1
    };
    oChart.addSeries(oSeries);
   }
  });
  oChart.hideLoading(); 
}

第三部分:C#代码

Response.Clear();
Response.Write("{\"rows1\":[10,20,30,40,50,200,70,100,90,200,100,60]}");
Response.End(); 
 输出的数据格式为 {"rows1":[10,20,30,40,50,200,70,100,90,200,100,60]} 
 多条的数据格式为 {"rows1":[10,20,30,40,50,200,70,100,90,200,100,60],"rows2":[10,20,30,40,50,200,70,100,90,200,100,60]}

第四部分:HTML页面代码

<div id="container" style="min-width:400px;width:1200px;height:400px;"></div>

下面给大家分享一段代码关于highcharts异步获取数据

页面异步代码

$(function () {
   var chart_validatestatics;
   $(document).ready(function () {
    var options_validatestatics = {
     chart: {
      renderTo: 'container_validatestatics',
      type: 'column'
     },
     title: {
      text: '验票分析'
     },
     subtitle: {
      text: 'tourol.cn'
     },
     xAxis: {
    },
    yAxis: {
     title: {
      text: '人数'
     }
    },
    plotOptions: {
     bar: {
      dataLabels: {
       enabled: true
      }
     }
    },
    tooltip: {
     formatter: function () {
      return '<b>' + this.x + '</b><br/>' + this.series.name + ': ' + this.y + '人';
     }
    },
    credits: {
     enabled: false
    },
    series: [{
     name: "验票用户",
     width: 3
    }]
   }
   $.get("/ajaxhandler/dataupdate.ashx?operate_type=validatestatics", function (data) {
    var xatrnames = [];
    var yvalidators = [];
    for (var i = 0; i < data.rows.length; i++) {
     xatrnames.push([
       data.rows[i].atrname
      ]);
     yvalidators.push([
       data.rows[i].atrname,
       parseInt(data.rows[i].nums)
      ]);
    }
    alert(xatrnames + yvalidators);
    options_validatestatics.xAxis.categories = xatrnames
    options_validatestatics.series[0].data = yvalidators;
    chart_validatestatics = new Highcharts.Chart(options_validatestatics);
   });
  });
 });

这里要注意的是:x轴数组定义好后,定义y轴数据的时候要把对应在x轴上的值也push到数组里,不然会造成无法显示的情况

对应的在ajaxhandler中,拼接字符串并返回即可

string json = "{\"rows\":[";
  for (int i = 0; i < datas.Rows.Count; i++)
  {
   json += "{\"atrname\":\"" + datas.Rows[i]["name"] + "\",\"nums\":\"" + datas.Rows[i]["nums"] + "\"},";
  }
  json = json.TrimEnd(',');
  json += "]}";
  context.Response.Write(json);
  context.Response.Flush();
  context.Response.End();
Javascript 相关文章推荐
一直复略了的一个问题,关于表单重复提交
Feb 15 Javascript
(推荐一个超好的JS函数库)S.Sams Lifexperience ScriptClassLib
Apr 29 Javascript
javascript 表单验证常见正则
Sep 28 Javascript
JS.GetAllChild(element,deep,condition)使用介绍
Sep 21 Javascript
checkbox选中与未选中判断示例
Aug 04 Javascript
Bootstrap基本组件学习笔记之面板(14)
Dec 08 Javascript
Ajax基础知识详解
Feb 17 Javascript
使用JS组件实现带ToolTip验证框的实例代码
Aug 23 Javascript
linux 后台运行node服务指令方法
May 23 Javascript
BootStrap表单验证中的非Submit类型按钮点击时触发验证的坑
Sep 05 Javascript
node解析修改nginx配置文件操作实例分析
Nov 06 Javascript
js实现文字头像的生成代码
Mar 07 Javascript
JavaScript阻止回车提交表单的方法
Dec 30 #Javascript
基于JavaScript代码实现微信扫一扫下载APP
Dec 30 #Javascript
分享两款带遮罩的jQuery弹出框
Dec 30 #Javascript
JavaScript小技巧整理
Dec 30 #Javascript
jQuery拖动元素并对元素进行重新排序
Dec 30 #Javascript
jQuery给元素添加样式的方法详解
Dec 30 #Javascript
Underscore源码分析
Dec 30 #Javascript
You might like
全世界最小的php网页木马一枚 附PHP木马的防范方法
2009/10/09 PHP
ThinkPHP应用模式扩展详解
2014/07/16 PHP
Laravel 4 初级教程之Pages、表单验证
2014/10/30 PHP
Django 标签筛选的实现代码(一对多、多对多)
2018/09/05 PHP
PHP优化之批量操作MySQL实例分析
2020/04/23 PHP
jQuery AJAX 调用WebService实现代码
2010/03/24 Javascript
jquery模拟按下回车实现代码
2011/09/20 Javascript
flash调用js中的方法,让js传递变量给flash的办法及思路
2013/08/07 Javascript
javascript获取web应用根目录的方法
2014/02/12 Javascript
JavaScript使用focus()设置焦点失败的解决方法
2014/09/03 Javascript
node.js中的console.time方法使用说明
2014/12/09 Javascript
JS实现点击颜色块切换指定区域背景颜色的方法
2015/02/25 Javascript
快速掌握Node.js之Window下配置NodeJs环境
2016/03/21 NodeJs
JS中常用的输出方式(五种)
2016/06/12 Javascript
jQuery解析XML 详解及方法总结
2016/09/28 Javascript
微信小程序 picker-view 组件详解及简单实例
2017/01/10 Javascript
使用VUE实现在table中文字信息超过5个隐藏鼠标移到时弹窗显示全部
2019/09/16 Javascript
24个解决实际问题的ES6代码片段(小结)
2020/02/02 Javascript
Vue 组件注册全解析
2020/12/17 Vue.js
JavaScript 生成唯一ID的几种方式
2021/02/19 Javascript
跟老齐学Python之print详解
2014/09/28 Python
python spyder中读取txt为图片的方法
2018/04/27 Python
用python实现前向分词最大匹配算法的示例代码
2020/08/06 Python
贝斯特韦斯特酒店集团官网:Best Western
2019/01/03 全球购物
乌克兰的第一家手表店:Deka
2020/03/05 全球购物
如何写出高性能的JSP和Servlet
2013/01/22 面试题
sleep()方法和wait()方法的区别是什么
2012/11/17 面试题
市场营销个人求职信范文
2014/02/02 职场文书
党员干部承诺书范文
2014/03/25 职场文书
2015年办公室文员工作总结
2015/04/24 职场文书
企业党支部工作总结2015
2015/05/21 职场文书
奔腾年代观后感
2015/06/09 职场文书
公司庆典主持词
2015/07/04 职场文书
公司转让协议书
2016/03/19 职场文书
2016年“我们的节日·清明节”活动总结
2016/04/01 职场文书
java实现web实时消息推送的七种方案
2022/07/23 Java/Android