zw05011 2020-04-09 15:32 采纳率: 0%
浏览 438
已结题

如何实现tornado后端给echart图实时传递数据?

1. 项目架构

前端:bootstap
数据可视化:echart中的share dataset图型
后端:tornado
数据库:mongodb

2. 问题:

想要实现从mongodb数据库实时采集数据,传给前端的echart。
请教,前端怎么接数据,后端通过什么传数据
具体怎么实现不太会

3. 代码

html页面代码test.html(静态有数据)

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8">
        <title>ECharts</title>
        <!-- 引入 echarts.js -->
        <script src="{{static_url('js/echarts.min.js')}}"></script>
    </head>

    <body>
        <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
        <div id="main" style="width: 1400px;height:700px;"></div>
        <script type="text/javascript">
        <script type="text/javascript">
                // 基于准备好的dom,初始化echarts实例
                    var myChart = echarts.init(document.getElementById('main'));
                                var option;
                                setTimeout(function () {

                                    option = {
                                        legend: {},
                                        tooltip: {
                                        trigger: 'axis',
                                        showContent: false
                                    },
                                    dataset: {
                                        source: [
                                            ['product', '2019-11', '2019-12', '2020-01' ],
                                            ['ftp', 86, 31, 28],
                                            ['http', 15, 19, 7],
                                            ['ssh', 24, 67, 18],
                                            ['telnet', 65, 67, 0],
                                            ['portscan', 56, 28, 28],
                                            ['mysql', 25, 37, 27],
                                            ['git', 1, 2, 11],
                                            ['ntp', 3, 0, 0],
                                            ['redis', 15, 2, 0],
                                            ['tcpbanner', 3, 1, 0],
                                            ['vnc', 15, 19, 0],
                                            ['rdp', 7, 6, 0],
                                            ['snmp', 31, 15, 7],
                                            ['sip', 4, 0, 0, ],
                                            ['mssql', 27, 10, 0, ],
                                            ['httpproxy', 14, 11, 0],


                                        ]
                                    },
                                    xAxis: {type: 'category'},
                                    yAxis: {gridIndex: 0},
                                    grid: {top: '55%'},
                                    series: [
                                        {type: 'line', smooth: true, seriesLayoutBy: 'row'},
                                        {type: 'line', smooth: true, seriesLayoutBy: 'row'},
                                        {type: 'line', smooth: true, seriesLayoutBy: 'row'},
                                        {type: 'line', smooth: true, seriesLayoutBy: 'row'},
                                        {type: 'line', smooth: true, seriesLayoutBy: 'row'},
                                        {type: 'line', smooth: true, seriesLayoutBy: 'row'},
                                        {type: 'line', smooth: true, seriesLayoutBy: 'row'},
                                        {type: 'line', smooth: true, seriesLayoutBy: 'row'},
                                        {type: 'line', smooth: true, seriesLayoutBy: 'row'},
                                        {type: 'line', smooth: true, seriesLayoutBy: 'row'},
                                        {type: 'line', smooth: true, seriesLayoutBy: 'row'},
                                        {type: 'line', smooth: true, seriesLayoutBy: 'row'},
                                        {type: 'line', smooth: true, seriesLayoutBy: 'row'},
                                        {type: 'line', smooth: true, seriesLayoutBy: 'row'},
                                        {type: 'line', smooth: true, seriesLayoutBy: 'row'},
                                        {type: 'line', smooth: true, seriesLayoutBy: 'row'},

                                        {
                                            type: 'pie',
                                            id: 'pie',
                                            radius: '30%',
                                            center: ['50%', '30%'],
                                            label: {
                                                formatter: '{b}: {@2012} ({d}%)'
                                            },
                                            encode: {
                                                itemName: 'product',
                                                value: '2012',
                                                tooltip: '2012'
                                            }
                                        }
                                    ]
                                };

                                myChart.on('updateAxisPointer', function (event) {
                                    var xAxisInfo = event.axesInfo[0];
                                    if (xAxisInfo) {
                                        var dimension = xAxisInfo.value + 1;
                                        myChart.setOption({
                                            series: {
                                                id: 'pie',
                                                label: {
                                                    formatter: '{b}: {@[' + dimension + ']} ({d}%)'
                                                },
                                                encode: {
                                                    value: dimension,
                                                    tooltip: dimension
                                                }
                                            }
                                        });
                                    }
                                });

                                myChart.setOption(option);

                            });
                                myChart.setOption(option);
        </script>
    </body>
</html>

4. test.html显示效果图

图片说明

  • 写回答

1条回答 默认 最新

  • console.log( ) 2020-04-09 15:36
    关注

    隔段时间请求数据,请求成功更新数据并刷新

    myChart.setOption(option);
    window.onresize = function(){
        myChart.resize();
        myChart1.resize();    //若有多个图表变动,可多写
    
    }
    $.ajax({
       url: 'http://www.',
       type: 'post',
       dataType:'json',
       contentType: 'application/json',
       async:true,
       data: JSON.stringify({
    
       }),
       success:function(data){
           console.log(data)
           var data1=[]
           var data2=[]
           for(var i=0;i<data.list.length;i++){
               data1[i]=data.list[i].name
               data2[i]=data.list[i].weight
           }
        myChart.setOption({
                xAxis: {
                    data: data1
                },
                series: [{
                    // 根据名字对应到相应的系列
                    name: '回收量',
                    data: data2
                }]
            });
       }
    
    });
    
    
    评论

报告相同问题?

悬赏问题

  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。