echarts如何实现动态曲线图(多条曲线)

要实现echarts动态曲线图(多条曲线),一般需要使用setInterval或者setTimeout来不断刷新数据,更新图表,并使用addData方法或dispose等方法来更新数据。具体步骤如下:

1.引入echarts包和动态加载所需的库

<!-- 引入echarts包 -->
<script src="//cdn.bootcdn.net/ajax/libs/echarts/4.7.0/echarts.min.js"></script>

<!-- 动态加载库 -->
<script src="//cdn.bootcdn.net/ajax/libs/require.js/2.3.6/require.min.js"></script>
<script src="//cdn.bootcdn.net/ajax/libs/echarts/4.7.0/extension/dataTool.min.js"></script>

2.准备容器和初始化echarts实例

<!-- 容器 -->
<div id="main" style="width: 800px;height:400px;"></div>

<!-- 初始化echarts实例 -->
<script>
    var myChart = echarts.init(document.getElementById('main'));
</script>

3.设置图表的配置项和数据源

// 配置项
option = {
    // 提示框默认隐藏
    tooltip: {
        show: false
    },
    // 图例
    legend: {
        data: ['曲线一','曲线二']
    },
    // X轴
    xAxis: {
        type: 'time',
        splitLine: {
            show: false
        }
    },
    // Y轴
    yAxis: {
        type: 'value',
        boundaryGap: [0, '100%'],
        splitLine: {
            show: false
        }
    },
    // 曲线1数据
    series: [
        {
            name: '曲线一',
            type: 'line',
            showSymbol: false,
            hoverAnimation: false,
            data: []
        },
        // 曲线2数据
        {
            name: '曲线二',
            type: 'line',
            showSymbol: false,
            hoverAnimation: false,
            data: []
        }
    ]
};

// 将配置项设置到图表中
myChart.setOption(option);

4.更新数据源

// 定义曲线1和曲线2的数据
var data1 = [],data2 = [];

// 根据需求更新数据
function getDate() {
    // 生成随机数
    var now = new Date();
    var value1 = Math.random() * 10;
    var value2 = Math.random() * 5;
    // 添加新数据
    data1.shift();
    data1.push({
        name: +now,
        value: [
            [now.getFullYear(), now.getMonth() + 1, now.getDate()].join('-'),
            Math.round(value1)
        ]
    });
    data2.shift();
    data2.push({
        name: +now,
        value: [
            [now.getFullYear(), now.getMonth() + 1, now.getDate()].join('-'),
            Math.round(value2)
        ]
    });
}

// 设置数据源
setInterval(function () {
    getDate();
    myChart.setOption({
        series: [
            {
                data: data1
            },
            {
                data: data2
            }
        ]
    });
}, 1000);

5.完整的动态曲线图示例

<!DOCTYPE html>
<html>
<head>
    <title>echarts动态曲线图(多条曲线)</title>
    <meta charset="utf-8">
    <!-- 引入echarts包 -->
    <script src="//cdn.bootcdn.net/ajax/libs/echarts/4.7.0/echarts.min.js"></script>

    <!-- 动态加载库 -->
    <script src="//cdn.bootcdn.net/ajax/libs/require.js/2.3.6/require.min.js"></script>
    <script src="//cdn.bootcdn.net/ajax/libs/echarts/4.7.0/extension/dataTool.min.js"></script>
</head>
<body>
    <!-- 容器 -->
    <div id="main" style="width: 800px;height:400px;"></div>

    <script>
        // 初始化echarts实例
        var myChart = echarts.init(document.getElementById('main'));

        // 配置项
        var option = {
            // 提示框默认隐藏
            tooltip: {
                show: false
            },
            // 图例
            legend: {
                data: ['曲线一','曲线二']
            },
            // X轴
            xAxis: {
                type: 'time',
                splitLine: {
                    show: false
                }
            },
            // Y轴
            yAxis: {
                type: 'value',
                boundaryGap: [0, '100%'],
                splitLine: {
                    show: false
                }
            },
            // 曲线1数据
            series: [
                {
                    name: '曲线一',
                    type: 'line',
                    showSymbol: false,
                    hoverAnimation: false,
                    data: []
                },
                // 曲线2数据
                {
                    name: '曲线二',
                    type: 'line',
                    showSymbol: false,
                    hoverAnimation: false,
                    data: []
                }
            ]
        };

        // 将配置项设置到图表中
        myChart.setOption(option);

        // 定义曲线1和曲线2的数据
        var data1 = [],data2 = [];

        // 根据需求更新数据
        function getDate() {
            // 生成随机数
            var now = new Date();
            var value1 = Math.random() * 10;
            var value2 = Math.random() * 5;
            // 添加新数据
            data1.shift();
            data1.push({
                name: +now,
                value: [
                    [now.getFullYear(), now.getMonth() + 1, now.getDate()].join('-'),
                    Math.round(value1)
                ]
            });
            data2.shift();
            data2.push({
                name: +now,
                value: [
                    [now.getFullYear(), now.getMonth() + 1, now.getDate()].join('-'),
                    Math.round(value2)
                ]
            });
        }

        // 设置数据源
        setInterval(function () {
            getDate();
            myChart.setOption({
                series: [
                    {
                        data: data1
                    },
                    {
                        data: data2
                    }
                ]
            });
        }, 1000);
    </script>
</body>
</html>

另一个动态曲线图示例可以是实时更新股票交易数据,每秒钟刷新一次,代码如下:

<!DOCTYPE html>
<html>
<head>
    <title>echarts动态曲线图(多条曲线)</title>
    <meta charset="utf-8">
    <!-- 引入echarts包 -->
    <script src="//cdn.bootcdn.net/ajax/libs/echarts/4.7.0/echarts.min.js"></script>

    <!-- 动态加载库 -->
    <script src="//cdn.bootcdn.net/ajax/libs/require.js/2.3.6/require.min.js"></script>
    <script src="//cdn.bootcdn.net/ajax/libs/echarts/4.7.0/extension/dataTool.min.js"></script>
</head>
<body>
    <!-- 容器 -->
    <div id="main" style="width: 800px;height:400px;"></div>

    <script>
        // 初始化echarts实例
        var myChart = echarts.init(document.getElementById('main'));

        // 配置项
        option = {
            title: {
                text: '股票交易数据动态曲线图'
            },
            // 提示框
            tooltip: {
                trigger: 'axis',
                axisPointer: {
                    animation: false
                }
            },
            // 图例
            legend: {
                data:['股票1','股票2']
            },
            // X轴
            xAxis: {
                type: 'time',
                splitLine: {
                    show: false
                }
            },
            // Y轴
            yAxis: {
                type: 'value',
                boundaryGap: [0, '100%'],
                splitLine: {
                    show: false
                }
            },
            // 曲线1数据
            series: [
                {
                    name: '股票1',
                    type: 'line',
                    showSymbol: false,
                    hoverAnimation: false,
                    data: []
                },
                // 曲线2数据
                {
                    name: '股票2',
                    type: 'line',
                    showSymbol: false,
                    hoverAnimation: false,
                    data: []
                }
            ]
        };

        // 将配置项设置到图表中
        myChart.setOption(option);

        // 定义股票1和股票2的数据
        var data1 = [],data2 = [];

        // 模拟数据的变化
        var base = +new Date();
        var oneHour = 3600 * 1000;

        // 根据数据源获取新的数据
        function getKLineData(data) {
            var now = new Date(base += oneHour);
            var prices = [];
            for (var i = 0; i < 8; i++) {
                prices.push(Math.random() * 1000);
            }
            data.shift();
            data.push({
                name: now.toString(),
                value: [
                    [now.getFullYear(), now.getMonth() + 1, now.getDate()].join('-'),
                    prices
                ]
            });
        }

        // 确定数据刷新的时间间隔
        setInterval(function () {
            getKLineData(data1);
            getKLineData(data2);
            myChart.setOption({
                series: [
                    {
                        data: data1
                    },
                    {
                        data: data2
                    }
                ]
            });
        }, 1000);
    </script>
</body>
</html>

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:echarts如何实现动态曲线图(多条曲线) - Python技术站

(0)
上一篇 2023年6月9日
下一篇 2023年6月9日

相关文章

  • 用clearfix:after消除css浮动解决外部div不能撑开问题

    首先,我们需要先了解什么是CSS浮动以及浮动的特性,浮动元素会脱离文档流和父元素的控制,从而产生问题,如外部div不能撑开内部浮动元素的高度等。 为了解决这种问题,我们通常会使用clearfix:after方法,让外部div能够正常的撑开内部浮动元素的高度,这个方法的核心是在外部div的伪元素:before或:after中加入clear:both这个属性,来…

    css 2023年6月10日
    00
  • CSS3系列教程:背景图片(背景大小和多背景图) 应用说明

    下面是针对“CSS3系列教程:背景图片(背景大小和多背景图) 应用说明”的完整攻略。 1. 背景图片的应用说明 在网页开发中,背景图片是很重要的一部分,可以为网页增加美感和视觉效果。CSS3不仅提供了多种背景图片的设置方式,还提供了更多的背景属性可以设置。 1.1 背景图片的设置方式 设置背景图片可以通过以下的CSS属性: background-image:…

    css 2023年6月9日
    00
  • jQuery的图片轮播插件PgwSlideshow使用详解

    让我来详细讲解一下“jQuery的图片轮播插件PgwSlideshow使用详解”。 什么是PgwSlideshow PgwSlideshow是一款基于 jQuery 的图片轮播插件。它可以用来展示图片,同时支持缩略图显示、分页功能等。在网页开发中使用 PgwSlideshow 可以让页面更加美观和动态。 如何使用PgwSlideshow 下载PgwSlide…

    css 2023年6月9日
    00
  • 纯 CSS 自定义多行省略的问题(从原理到实现)

    下面我将详细讲解“纯 CSS 自定义多行省略的问题(从原理到实现)”的完整攻略。 什么是多行省略? 多行省略是指在一个元素内部的多个行内文字内容中,超出指定行数后,将其余文本省略号表示。 实现多行省略的原理 实现多行省略的原理是使用CSS中的文本溢出和换行属性,由于文本溢出是需要在一定的宽度范围内容纳文本的,而在容纳文本的情况下再加换行属性可以实现多行效果。…

    css 2023年6月10日
    00
  • css中link和@import的区别分析详解

    CSS中Link和@import的区别分析详解 Link和@import的介绍 Link和@import都是CSS中常用的引用外部样式表的方法。Link是HTML中使用,@import是CSS中使用。 Link通过HTML的head标签引入外部样式表,而@import则是在CSS文件中引入外部样式表。 区别分析 加载方式 Link会在页面加载时同时加载外部样…

    css 2023年6月9日
    00
  • 设计适用于打印的CSS样式

    设计适用于打印的 CSS 样式的攻略,可以分为以下几步: 1. 定义样式表 在 HTML 文件中,定义一个新的样式表,该样式表仅应用于打印界面。可以通过以下方式实现: <link rel="stylesheet" type="text/css" media="print" href=&quot…

    css 2023年6月9日
    00
  • CSS网页实例 利用box-sizing实现div仿框架结构实现代码

    下面我会提供一个详细的攻略来讲解“CSS网页实例 利用box-sizing实现div仿框架结构实现代码”。首先,我们需要了解box-sizing的概念。 box-sizing是CSS3中的一个属性,用于指定盒子的尺寸计算模式,默认值为content-box。在content-box模式下,盒子的宽度和高度只包括内容的尺寸,而不包括边框和内边距的尺寸。而在bo…

    css 2023年6月10日
    00
  • JS点击图片弹出文件选择框并覆盖原图功能的实现代码

    让我们一步步来实现JS点击图片弹出文件选择框并覆盖原图功能。 步骤一:HTML 首先,我们需要一个HTML页面。在HTML页面中,我们需要有一张图片以及一个文件选择框。具体代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> &…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部