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 相关文章推荐
js类中获取外部函数名的方法与代码
Sep 12 Javascript
JQuery AJAX实现目录浏览与编辑的代码
Oct 21 Javascript
Whatever:hover 无需javascript让IE支持丰富伪类
Jun 29 Javascript
30个最好的jQuery 灯箱插件分享
Apr 25 Javascript
javascript权威指南 学习笔记之null和undefined
Sep 25 Javascript
JSON中双引号的轮回使用过程中一定要小心
Mar 05 Javascript
JavaScript判断数组是否包含指定元素的方法
Jul 01 Javascript
理解JavaScript的变量的入门教程
Jul 07 Javascript
基于jQuery倒计时插件实现团购秒杀效果
May 13 Javascript
很棒的vue弹窗组件
May 24 Javascript
node中koa中间件机制详解
Aug 22 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
常用星际术语索引(新手指南)
2020/03/04 星际争霸
压力如何影响浓缩咖啡品质
2021/03/03 咖啡文化
PHP Undefined index报错的修复方法
2011/07/17 PHP
php多文件上传实现代码
2014/02/20 PHP
CentOS下与Apache连接的PHP多版本共存方案实现详解
2015/12/19 PHP
麦鸡的TAB切换功能结合了javascript和css
2007/12/17 Javascript
js css样式操作代码(批量操作)
2009/10/09 Javascript
15款优秀的jQuery导航菜单插件分享
2011/07/19 Javascript
jQuery中RadioButtonList的功能及用法实例介绍
2013/08/23 Javascript
JS实现多物体缓冲运动实例代码
2013/11/29 Javascript
jquery实现侧边弹出的垂直导航
2014/12/09 Javascript
innerHTML属性,outerHTML属性,textContent属性,innerText属性区别详解
2015/03/13 Javascript
JS实现超精简响应鼠标显示二级菜单代码
2015/09/12 Javascript
通过扫描二维码打开app的实现代码
2016/11/10 Javascript
JavaScript数据类型的存储方法详解
2017/08/25 Javascript
vue实现tab切换外加样式切换方法
2018/03/16 Javascript
JavaScript变量提升和严格模式实例分析
2019/01/27 Javascript
django js 实现表格动态标序号的实例代码
2019/07/12 Javascript
jQuery实现的上拉刷新功能组件示例
2020/05/01 jQuery
vue 实现图片懒加载功能
2020/12/31 Vue.js
详解Python中的相对导入和绝对导入
2017/01/06 Python
Python调用ctypes使用C函数printf的方法
2017/08/23 Python
Python数据结构之顺序表的实现代码示例
2017/11/15 Python
Python使用matplotlib实现基础绘图功能示例
2018/07/03 Python
python调用百度语音识别api
2018/08/30 Python
Pandas之Dropna滤除缺失数据的实现方法
2019/06/25 Python
Python如何给函数库增加日志功能
2020/08/04 Python
Hammitt官网:设计师手袋
2020/05/23 全球购物
C语言面试题
2013/05/19 面试题
学前教育毕业生自荐信
2013/10/29 职场文书
应届护士推荐信
2013/11/16 职场文书
护理专业学生职业生涯规划范文
2014/03/11 职场文书
公司合作协议书范本
2014/04/18 职场文书
公务员学习习总书记“三严三实”思想汇报
2014/09/19 职场文书
高中班主任评语
2014/12/30 职场文书
85句关于理想的名言警句大全
2019/08/22 职场文书