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动态添加的元素绑定事件处理函数代码
Aug 02 Javascript
jQuery.clean使用方法及思路分析
Jan 07 Javascript
js字符串转换成数字与数字转换成字符串的实现方法
Jan 08 Javascript
javascript实现单击和双击并存的方法
Dec 13 Javascript
SublimeText自带格式化代码功能之reindent
Dec 27 Javascript
浅谈js的异步执行
Oct 18 Javascript
angular中不同的组件间传值与通信的方法
Nov 04 Javascript
使用node打造自己的命令行工具方法教程
Mar 26 Javascript
vue中使用cookies和crypto-js实现记住密码和加密的方法
Oct 18 Javascript
用原生JS实现爱奇艺首页导航栏代码实例
Sep 19 Javascript
支付宝小程序实现省市区三级联动
Jun 21 Javascript
vue使用video插件vue-video-player详解
Oct 23 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中转义mysql语句的实现代码
2011/06/24 PHP
使用PHP静态变量当缓存的方法
2013/11/13 PHP
PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
2014/12/25 PHP
PHP Cookie学习笔记
2016/08/23 PHP
php opendir()列出目录下所有文件的实例代码
2016/10/02 PHP
Laravel框架执行原生SQL语句及使用paginate分页的方法
2018/08/17 PHP
JavaScript 常见对象类创建代码与优缺点分析
2009/12/07 Javascript
使用IE6看老赵的博客 jQuery初探
2010/01/17 Javascript
基本jquery的控制tabs打开的数量的代码
2010/10/17 Javascript
jQuery实现点击标题输入详细信息
2013/04/16 Javascript
jquery中prop()方法和attr()方法的区别浅析
2013/09/06 Javascript
node.js中的fs.fchmodSync方法使用说明
2014/12/16 Javascript
jQuery中$this和$(this)的区别介绍(一看就懂)
2015/07/06 Javascript
JS功能代码集锦
2016/05/04 Javascript
vue的props实现子组件随父组件一起变化
2016/10/27 Javascript
微信小程序 页面之间传参实例详解
2017/01/13 Javascript
angularjs ui-router中路由的二级嵌套
2017/03/10 Javascript
微信小程序实现电子签名功能
2020/07/29 Javascript
JS闭包原理及其使用场景解析
2020/12/03 Javascript
python实现批量转换文件编码(批转换编码示例)
2014/01/23 Python
python人人网登录应用实例
2014/09/26 Python
Python基于正则表达式实现文件内容替换的方法
2017/08/30 Python
基于python requests库中的代理实例讲解
2018/05/07 Python
在Django下创建项目以及设置settings.py教程
2019/12/03 Python
pyqt5数据库使用详细教程(打包解决方案)
2020/03/25 Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
2020/04/22 Python
简单了解python shutil模块原理及使用方法
2020/04/28 Python
Django ORM 查询表中某列字段值的方法
2020/04/30 Python
解决Keras使用GPU资源耗尽的问题
2020/06/22 Python
python设置表格边框的具体方法
2020/07/17 Python
vscode调试django项目的方法
2020/08/06 Python
一款纯css3实现的漂亮的404页面的实例教程
2014/11/27 HTML / CSS
HTML5 FormData 方法介绍以及实现文件上传示例
2017/09/12 HTML / CSS
美国一家著名的儿童鞋制造商:Stride Rite
2017/01/02 全球购物
世界第一曲奇连锁店:Mrs. Fields Cookies
2017/02/04 全球购物
四年大学生活的个人自我评价
2013/12/11 职场文书