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 相关文章推荐
jQuery中json对象的复制方式介绍(数组及对象)
Jun 08 Javascript
jquery 循环显示div的示例代码
Oct 18 Javascript
JS跨域问题详解
Nov 25 Javascript
jQuery插件bgStretcher.js实现全屏背景特效
Jun 05 Javascript
JS实现仿微博可关闭弹出层效果
Sep 21 Javascript
jQuery中的each()详细介绍(推荐)
May 25 Javascript
JavaScript解析任意形式的json树型结构展示
Jul 23 Javascript
Vue cli构建及项目打包以及出现的问题解决
Aug 27 Javascript
Node.js+Express+Mysql 实现增删改查
Apr 03 Javascript
新手简单了解vue
May 29 Javascript
vue中keep-alive组件的入门使用教程
Jun 06 Javascript
vue 动态创建组件的两种方法
Dec 31 Vue.js
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(三)
2012/03/22 PHP
yii使用activeFileField控件实现上传文件与图片的方法
2015/12/28 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
微信公众号之主动给用户发送消息功能
2019/06/22 PHP
网页常用特效代码整理
2006/06/23 Javascript
DOM_window对象属性之--clipboardData对象操作代码
2011/02/03 Javascript
jQuery中eq()方法用法实例
2015/01/05 Javascript
跟我学习javascript的基本类型和引用类型
2015/11/16 Javascript
Javascript的表单验证-提交表单
2016/03/18 Javascript
jQuery根据表单name获取值的方法
2016/05/24 Javascript
前端开发必知的15个jQuery小技巧
2017/01/22 Javascript
JavaScript设计模式之代理模式详解
2017/06/09 Javascript
vue+Java后端进行调试时解决跨域问题的方式
2017/10/19 Javascript
js导出Excel表格超出26位英文字符的解决方法ES6
2017/11/15 Javascript
微信小程序实现签到功能
2018/10/31 Javascript
对 Vue-Router 进行单元测试的方法
2018/11/05 Javascript
你可能从未使用过的11+个JavaScript特性(小结)
2020/01/08 Javascript
vue实现拖拽进度条
2021/03/01 Vue.js
[22:07]DOTA2-DPC中国联赛 正赛 iG vs Magma 选手采访
2021/03/11 DOTA
在Python的Flask框架下收发电子邮件的教程
2015/04/21 Python
python判断一个集合是否包含了另外一个集合中所有项的方法
2015/06/30 Python
Python获取linux主机ip的简单实现方法
2016/04/18 Python
Python制作动态字符图的实例
2019/01/27 Python
tensorflow 实现自定义layer并添加到计算图中
2020/02/04 Python
使用Python防止SQL注入攻击的实现示例
2020/05/21 Python
Tensorflow之MNIST CNN实现并保存、加载模型
2020/06/17 Python
解决Python 写文件报错TypeError的问题
2020/10/23 Python
用纯CSS3实现网页中常见的小箭头
2017/10/16 HTML / CSS
世界最大域名注册商:GoDaddy
2016/07/24 全球购物
俄罗斯香水和化妆品购物网站:Л’Этуаль
2018/05/10 全球购物
房地产资料员岗位职责
2014/07/02 职场文书
德育标兵事迹材料
2014/08/24 职场文书
乡镇群众路线整改落实情况汇报
2014/10/28 职场文书
医院党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
2015年乡镇统计工作总结
2015/04/22 职场文书
2019年亲子运动会口号
2019/10/11 职场文书