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日

相关文章

  • 七个基于JavaScript实现的情人节表白特效

    【标题一:七个基于JavaScript实现的情人节表白特效】 一、概述 情人节表白特效是许多情侣表达爱意的常用方式。而基于JavaScript实现的情人节表白特效,可以给表白增加更灵活、个性化的元素。本篇文章将为读者介绍七种基于JavaScript实现的情人节表白特效,包括背景闪烁、爱心雨、心形文字等效果。 二、特效攻略 1. 背景闪烁 背景闪烁特效通过改变…

    css 2023年6月10日
    00
  • 网页布局+纯CSS纵向下拉菜单 IE6/IE7兼容

    下面我来详细讲解“网页布局+纯CSS纵向下拉菜单 IE6/IE7兼容”的完整攻略。 网页布局 关于网页布局,根据不同的需求和设计,可以采用多种不同的布局方式,比如经典的水平居中布局、流式布局、响应式布局等等。根据业务需求和UI设计,选择适合的布局方式。 其中常见的一种网页布局方式是使用flex布局,它在现代浏览器中有很好的支持。具体使用方式如下: 在父元素上…

    css 2023年6月11日
    00
  • HTML表格标记教程(1):制作表格

    让我为你详细讲解“HTML表格标记教程(1):制作表格”的完整攻略。 1. 制作表格的基本结构 HTML表格通常由<table>、<tr>和<td>标签组成,其中: <table>标签定义表格,所有表格元素都必须放在<table>标签中 <tr>标签用于定义表格中的行 <td&gt…

    css 2023年6月10日
    00
  • vue中checkbox如何修改为圆形样式

    对于”vue中checkbox如何修改为圆形样式”的问题,我们可以通过以下步骤进行修改: 引入正确的css文件 应该引入一个能够提供样式的css库或文件,并且这个文件中应该提供了相应的checkbox圆形样式。比较常用的库包括Bootstrap、Tailwind CSS、Bulma等,可以根据自己的需求选择其中一个,然后在Vue组件中进行引入。 示例1:使用…

    css 2023年6月11日
    00
  • DIV+CSS通过border样式制作带箭头提示框效果

    使用DIV+CSS通过border样式制作带箭头提示框效果可以让我们轻松地实现一个简洁明了的弹出提示框,提高用户体验。以下为详细攻略。 第一步:HTML结构 首先,我们需要在HTML中添加一个容器元素,并在其中添加相关内容。例如,下面这段代码是一个带箭头提示框的基本HTML结构: <div class="tooltip"> &…

    css 2023年6月10日
    00
  • vue中渐进过渡效果实现

    下面是关于Vue中渐进过渡效果实现的完整攻略。 简介 在Vue中,过渡效果是一个非常重要的特性。可以用来创建动态的交互,使用户界面更加优雅、平滑。渐进效果是过渡效果中一种常见的类型。在渐进效果中,页面元素的出现或消失不是瞬间完成的,而是平滑地、逐渐地完成的。在这里,我们将介绍如何在Vue中实现渐进效果。 步骤 1. 安装Vue 首先,我们需要安装Vue。在命…

    css 2023年6月10日
    00
  • 详解css3自定义滚动条样式写法

    下面是详解css3自定义滚动条样式写法的完整攻略: 1. 基础概念 在开始自定义滚动条样式之前,我们需要了解一些基础概念。CSS3中为我们提供了一个新的属性:::-webkit-scrollbar,用于控制滚动条的样式。其中,-webkit-是浏览器前缀,表示该属性仅在webkit内核的浏览器中生效。另外,::-webkit-scrollbar是一个伪元素,…

    css 2023年6月10日
    00
  • CSS实现三栏布局的四种方法示例

    CSS实现三栏布局是Web开发中常见的布局方式之一。以下是四种实现三栏布局的方法示例,包括两个示例说明: 1. 浮动布局 浮动布局是一种常见的实现三栏布局的方法。以下是一个简单的例: <div class="container"> <div class="left">Left Column&lt…

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