jQuery+AJAX+JSON+Highcharts 可视化数据实战——实时的温度曲线实战

因为项目需要打算把原来做的比赛的东西,迁移到Angular JS上面,但是发现要熟悉使用起来还需要一段时间,旧的框架就是现有的jQuery+JSON+Highcharts+AJAX。

数据格式如下所示的JSON:

{
title: "from android",
led: true,
temperature: 24,
more: "2013年06月23日 14:24:31",
humidity: 142,
smoke: 8,
infrared: false,
tel: false,
msg: false
}

HIGHCHARTS

Highcharts是一个制作图表的纯Javascript类库,主要特性如下:

  • 兼容性:兼容当今所有的浏览器,包括iPhone、IE和火狐等等;
  • 对个人用户完全免费;
  • 纯JS,无BS;
  • 支持大部分的图表类型:直线图,曲线图、区域图、区域曲线图、柱状图、饼装图、散布图;
  • 跨语言:不管是PHP、Asp.net还是Java都可以使用,它只需要三个文件:一个是Highcharts的核心文件highcharts.js,还有a canvas emulator for IE和Jquery类库或者MooTools类库;
  • 提示功能:鼠标移动到图表的某一点上有提示信息;
  • 放大功能:选中图表部分放大,近距离观察图表;
  • 易用性:无需要特殊的开发技能,只需要设置一下选项就可以制作适合自己的图表;
  • 时间轴:可以精确到毫秒;

不过因为项目原因,所以可能不会再使用这个,只对个人免费,现在的考虑是基于D3做一个新的。

Highcharts支持直接导出图表,上图就是导出的温度走势,目测是在24~25之间。

jQuery AJAX使用

基础用法可见方网,如下所示
$.ajax({
  dataType: "json",
  url: url,
  data: data,
  success: success
});

注意: json和jsonp的不同在于,ajax不支持跨站,jsonp就这样产生了,需要加上回调,就可以跨站。
一开始没有注意到这个问题,于是将API放到不同听地方去。。。最后只好调回来,因为比较简单。

HIGHCHARTS使用

$(function () {
        $('#container').highcharts({
            title: {
                text: 'Monthly Average Temperature',
                x: -20 //center
            },
            subtitle: {
                text: 'Source: WorldClimate.com',
                x: -20
            },
            xAxis: {
                categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
                    'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
            },
            yAxis: {
                title: {
                    text: 'Temperature (°C)'
                },
                plotLines: [{
                    value: 0,
                    width: 1,
                    color: '#808080'
                }]
            },
            tooltip: {
                valueSuffix: '°C'
            },
            legend: {
                layout: 'vertical',
                align: 'right',
                verticalAlign: 'middle',
                borderWidth: 0
            },
            series: [{
                name: 'Tokyo',
                data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6]
            }, {
                name: 'New York',
                data: [-0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5]
            }, {
                name: 'Berlin',
                data: [-0.9, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6, 17.9, 14.3, 9.0, 3.9, 1.0]
            }, {
                name: 'London',
                data: [3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8]
            }]
        });
    });
    

官网的示例给人一看就简单易懂,接下来我们需要将三者结合到一起。

Highcharts+AJAX

highcharts的series直接data用的是数组,我们只需要将json获取的温度数组push到一个新建的数组里面就可以完成工作了。
    var zero = [];
    $.getJSON('/api/v1/?format=json', function(json) {
        $.each(json, function(key, val) {
            zero.push(val.temperature);
        });



  
  

一开始定义一个空数组zero,如果获取'/api/v1/?format=json'这个JSON数据成功,变量json就是存储json数据
each中的key对应的是key,val对应的是value,将温度值存入zero再放入上面的数据中。一个简单的对比 (转载标注源自 Phodal's Blog )
           series: [{
                name: '本月',
                data: zero
            }, {
                name: '对比',
                data: [26.0]
            }]

实时刷新

假设我们上面写的是drawTemp()函数,5000ms的刷新,那么就是:
$(document).ready(function() {
     
      setInterval("drawTemp();", 5000);
});

效果如图所示

加上jQuery Mobile就超级牛力了。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
JS(html, css)数据可视化是指利用JavaScript、HTML和CSS等前端技术将数据以图表、图像等形式展示出来的过程。数据可视化数据分析的重要环节,通过可视化可以更直观地展示数据的趋势、关系和模式,帮助用户更好地理解和分析数据。 在数据可视化中,使用JS可以方便地操作和处理数据。JS拥有强大的数据处理能力,能够对原始数据进行清洗、过滤和计算等操作,使得数据更加符合可视化的需求。同时,JS还可以与后端进行数据交互,实现数据的动态更新和实时展示。 HTML和CSS则负责数据可视化的样式和布局。HTML提供了各种标签和元素,可以将数据展示为表格、列表、图像等形式。同时,HTML还可以通过嵌套和样式设置,构建出复杂的数据可视化页面。CSS则用于设置数据可视化的样式,如字体、颜色、排版等,使得数据可视化更加美观和易读。 在数据可视化中,常用的JS库有D3.js、ECharts、Highcharts等,它们提供了丰富的图表组件和交互特性,能够帮助开发者快速构建各种类型的数据可视化。同时,很多网页制作工具和可视化工具也提供了可视化的模板和组件,使用HTML和CSS可以很方便地进行定制和扩展。 总之,JS(html, css)数据可视化是一种利用前端技术实现数据展示与分析的方法,通过JS的数据处理能力和HTML、CSS的样式和布局,可以将数据以图表、图像等形式展示出来,使得数据更加易读和易于理解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值