当前位置

网站首页> 程序设计 > 开源项目 > 程序开发 > 浏览文章

echarts动态获取数据实例 - 靠谱崔小拽

作者:小梦 来源: 网络 时间: 2024-05-04 阅读:

echarts动态获取数据库的实时数据的简单实例。实例演示: 跳转demo

引入echarts 文件。

引入echarts的文件方式有多种,比较推荐模块化的引入方式。
小拽的简单demo是直接引入文件,提供一个下载地址 : 点击下载

html 部分代码

一块div 用于echart的展现。

<div id="echart_show" style="height:500px">这里是一个布局展现</div>

js 部分代码

$(document).ready(function () {    // 绘制反馈量图形    var init_echarts = function () {        var refreshChart = function (show_data) {my_demo_chart = echarts.init(document.getElementById('echart_show'));my_demo_chart.showLoading({    text: '加载中...',    effect: 'whirling'});var echarts_all_option = {    title: {        text: '动态数据',        subtext: '纯属虚构'    },    tooltip: {        trigger: 'axis'    },    legend: {        data: ['最新成交价', '预购队列']    },    toolbox: {        show: true,        feature: {mark: {show: true},dataView: {show: true, readOnly: false},magicType: {show: true, type: ['line', 'bar']},restore: {show: true},saveAsImage: {show: true}        }    },    dataZoom: {        show: false,        start: 0,        end: 100    },    xAxis: [        {type: 'category',boundaryGap: true,data: (function () {var now = new Date();var res = [];var len = 10;while (len--) {    res.unshift(now.toLocaleTimeString().replace(/^\D*/, ''));    now = new Date(now - 2000);}return res;})()        },        {type: 'category',boundaryGap: true,data: (function () {var res = [];var len = 10;while (len--) {    res.push(len + 1);}return res;})()        }    ],    yAxis: [        {type: 'value',scale: true,name: '价格',boundaryGap: [0.2, 0.2]        },        {type: 'value',scale: true,name: '预购量',boundaryGap: [0.2, 0.2]        }    ],    series: [        {name: '预购队列',type: 'bar',xAxisIndex: 1,yAxisIndex: 1,// 获取到数据库的数据data: show_data[0]        },        {name: '最新成交价',type: 'line',// 实时获取的数据data:show_data[1]        }    ]};my_demo_chart.hideLoading();my_demo_chart.setOption(echarts_all_option);        };        // 获取原始数据        $.ajax({url: "http://cuihuan.net:1015/demo_file/echarts_realtime_demo/get_data.php",data: {type: "2"},success: function (data) {    // 根据数据库取到结果拼接现在结果    refreshChart(eval(data));}        });    };    // 开启实时获取数据更新    $("#getData").on("click",function() {        var timeTicket;        var lastData = 11;        var axisData;        clearInterval(timeTicket);        timeTicket = setInterval(function () {// 获取实时更新数据$.ajax({    url: "http://cuihuan.net:1015/demo_file/echarts_realtime_demo/get_data.php",    data: {type: "new"},    success: function (data) {        // 根据条件转换成相应的api 转化为echart 需要的数据        // todo 更新数据采用随机更新的方式        lastData += Math.random() * ((Math.round(Math.random() * 10) % 2) == 0 ? 1 : -1);        lastData = lastData.toFixed(1) - 0;        axisData = (new Date()).toLocaleTimeString().replace(/^\D*/, '');        // 动态数据接口 addData        my_demo_chart.addData([[0,        // 系列索引Math.round(Math.random() * 1000), // 新增数据true,     // 新增数据是否从队列头部插入false     // 是否增加队列长度,false则自定删除原有数据,队头插入删队尾,队尾插入删队头],[1,        // 系列索引lastData, // 新增数据false,    // 新增数据是否从队列头部插入false,    // 是否增加队列长度,false则自定删除原有数据,队头插入删队尾,队尾插入删队头axisData  // 坐标轴标签]        ]);    }});        }, 2100);        // 关闭更新操作        $("#stopData").on("click", function () {clearInterval(timeTicket);        });    });    // 默认加载    var default_load = (function () {        init_echarts();    })();});

php 部分代码

/** * 连接数据库获取数据 * * User: cuixiaohuan * Date: 15/12/4 * Time: 下午6:47 */// 获取请求的类型$type = $_GET['type'];// 连接服务器$link = mysql_connect('ip:port', 'user', 'password');if (!$link) {    die("Could not connect:" . mysql_error());}// 获取test库数据$crowd_db = mysql_select_db('test', $link);$day_time = date("Y-m-d");// 根据传输过来的数据获取数据$static_sql = "select v from test where id = " . $type . " limit 10";// 获取数据之后返回$res = mysql_query($static_sql, $link_2004);if ($res) {    // 将结果进行入库操作    $row = mysql_fetch_row($res);    if($row[0]){        echo $row[0];    }    mysql_free_result($res);}

简单说明

小拽的demo中,根据echarts的api,绘制出了原有的图形展示;之后,对js设置了个定时任务,实时的去获取数据库中可能新入库的数据,接口通过php简单调用数据库实现。

小拽个人小站