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 相关文章推荐
javascript concat数组累加 示例
Sep 03 Javascript
基于jquery的jqDnR拖拽溢出的修改
Feb 12 Javascript
jQuery 数据缓存模块进化史详细介绍
Nov 19 Javascript
使用JavaScript动态设置样式实现代码及演示动画
Jan 25 Javascript
jquery操作checkbox实现全选和取消全选
May 02 Javascript
jQueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug及解决方案
Dec 19 Javascript
JavaScript仿聊天室聊天记录
Dec 27 Javascript
ajax实现加载页面、删除、查看详细信息 bootstrap美化页面!
Mar 14 Javascript
JS实现div模块的截图并下载功能
Oct 17 Javascript
JavaScript中click和onclick本质区别与用法分析
Jun 07 Javascript
webpack4.0+vue2.0利用批处理生成前端单页或多页应用的方法
Jun 28 Javascript
js实现验证码干扰(静态)
Feb 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
解析PHP生成静态html文件的三种方法
2013/06/18 PHP
解析在apache里面给php写虚拟目录的详细方法
2013/06/24 PHP
php读取csv实现csv文件下载功能
2013/12/18 PHP
php 启动报错如何解决
2014/01/17 PHP
详解Laravel视图间共享数据与视图Composer
2016/08/04 PHP
javascript编程起步(第七课)
2007/02/27 Javascript
可以文本显示的公告栏的js代码
2007/03/11 Javascript
WordPress JQuery处理沙发头像
2009/06/22 Javascript
jquery缓动swing liner控制动画过程不同时刻的速度
2014/05/29 Javascript
js实现从右向左缓缓浮出网页浮动层广告的方法
2015/05/09 Javascript
理解Javascript的动态语言特性
2015/06/17 Javascript
AngularJS验证信息框架的封装插件用法【w5cValidator扩展插件】
2016/11/03 Javascript
vue axios请求拦截实例代码
2018/03/29 Javascript
vue cli 3.0 搭建项目的图文教程
2019/05/17 Javascript
解决vue中使用proxy配置不同端口和ip接口问题
2019/08/14 Javascript
vscode 配置vue+vetur+eslint+prettier自动格式化功能
2020/03/23 Javascript
uni-app实现获取验证码倒计时功能
2020/11/01 Javascript
基于进程内通讯的python聊天室实现方法
2015/06/28 Python
Python中的FTP通信模块ftplib的用法整理
2016/07/08 Python
python循环定时中断执行某一段程序的实例
2019/06/29 Python
python实现从本地摄像头和网络摄像头截取图片功能
2019/07/11 Python
详解Python+Selenium+ChromeDriver的配置和问题解决
2021/01/19 Python
利用CSS3实现自定义滚动条代码分享
2016/08/18 HTML / CSS
详解css3 mask遮罩实现一些特效
2018/10/24 HTML / CSS
解决HTML5中滚动到底部的事件问题
2019/08/22 HTML / CSS
皮姆斯勒语言学习:Pimsleur Language Programs
2018/06/30 全球购物
英国办公家具网站:Furniture At Work
2019/10/07 全球购物
大四学生找工作的自荐信
2014/03/27 职场文书
新闻传播专业求职信
2014/07/22 职场文书
小学生十佳少年事迹材料
2014/08/20 职场文书
捐书仪式主持词
2015/07/04 职场文书
公文格式,规则明细(新手收藏)
2019/07/23 职场文书
Python帮你解决手机qq微信内存占用太多问题
2022/02/15 Python
Python实现抖音热搜定时爬取功能
2022/03/16 Python
Python之matplotlib绘制折线图
2022/04/13 Python
Spring Data JPA框架的核心概念和Repository接口
2022/04/28 Java/Android