echart的整合到html

本文介绍了如何将Echarts与Vue框架结合,展示了一个从后端获取数据并渲染折线图的例子。首先,从Echarts官网获取折线图代码并引入所需js文件。然后,创建Java后端接口返回包含时间、食物集合和食物名字的Map对象。最后,在Vue的mounted钩子中,使用axios获取数据并调用echarts的setOption方法绘制图表。
摘要由CSDN通过智能技术生成

1.首先我们来简单看一下html整合echart的流程

在这里插入图片描述

2.我们这里找一个echart官网https://echarts.apache.org/的折线图来延演示

在这里插入图片描述
复制他的代码到我们的html页面,这里需要引入echarts.js和vue.js和axios.js文件,如果你是用原生的ajax也可以不引入axios.js

在这里插入图片描述

3.我们可以看到他这个代码里面series和legend.data还有xAxis.data都是可以自定义的

这个时候我们就需要封装对象了
从前端我们可以分析前端需要的参数是有2个数组和一个list对象,数据比较复杂,
所以我们直接返回一个map对象,里面包含2个数组和一个list对象

@RestController
@RequestMapping("/t")
public class Test {
    @RequestMapping("tt")
    public Map<String,Object> findall() {
        List<Integer> one_list = new ArrayList();
        one_list.add(6);one_list.add(14);one_list.add(5);
        List<Integer> two_list = new ArrayList();
        two_list.add(7);two_list.add(1);two_list.add(18);
        Tou one = new Tou();
        one.setName("西瓜");
        one.setType("line");
        one.setData(one_list);

        Tou two = new Tou();
        two.setName("香蕉");
        two.setType("line");
        two.setData(two_list);

        List<Tou> list_Food = new ArrayList<>();
        list_Food.add(one);
        list_Food.add(two);

        Map<String,Object> map = new HashMap<>();

        List<String> time = new ArrayList<>();
        time.add("第一天");
        time.add("第二天");
        time.add("第三天");

        String[] foodName={one.getName(),two.getName()};
        map.put("shiJian",time);//时间
        map.put("Food",list_Food);//食物集合
        map.put("FoodName",foodName);//食物名字
        return map;
    }
}

对应的Tou.java是

@Data
public class Tou {
    String name;
    String type;
    List<Integer> data;
}

对应的html是

<!DOCTYPE html>
<html>
<head>
    <!-- 页面meta -->
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no" name="viewport">
    <script src="../plugins/echarts/echarts.js"></script>
</head>
<body class="hold-transition">
<div id="app">
    <div class="app-container">
        <div class="box">
            <!-- 为 ECharts 准备一个具备大小(宽高)的 DOM -->
            <div id="chart1" style="height:600px;width: 900px"></div>
        </div>
    </div>
</div>
</body>
<!-- 引入组件库 -->
<script src="../js/vue.js"></script>
<!--<script src="../plugins/elementui/index.js"></script>-->
<script src="../js/axios-0.18.0.js"></script>
<script type="text/javascript">
    var vue = new Vue({
        el: '#app',
        //钩子函数,VUE对象初始化完成后自动执行
        mounted() {
            this.findPage();
        },
        methods: {
            findPage(){
                let myChart1 = echarts.init(document.getElementById('chart1'));
                    myChart1.setOption(
                        {
                            title: {
                                text: '折线图堆叠'
                            },
                            tooltip: {
                                trigger: 'axis'
                            },
                            legend: {
                                data: res.data.FoodName
                            },
                            grid: {
                                left: '3%',
                                right: '4%',
                                bottom: '3%',
                                containLabel: true
                            },
                            toolbox: {
                                feature: {
                                    saveAsImage: {}
                                }
                            },
                            xAxis: {
                                type: 'category',
                                boundaryGap: false,
                                data: res.data.shiJian
                            },
                            yAxis: {
                                type: 'value'
                            },
                            series: res.data.Food
                        });
                });
            }
        }
    })
</script>
</html>

出来的图像是
在这里插入图片描述

ECharts 是百度开源的一款基于 JavaScript 的数据可视化库,支持多种类型的图表展示,并提供了一系列易于使用的配置选项。MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传递协议,广泛应用于物联网设备通信。 将 ECharts 整合到 MQTT 系统主要是为了实时更新和显示来自 MQTT 的数据变化。下面是一个基本的步骤概述: ### 步骤 1: 设置 MQTT 客户端 首先,需要使用 MQTT 协议创建一个客户端连接到 MQTT 服务器。例如,可以使用 Paho MQTT 客户端库(Python、JavaScript 等语言都有相应的版本),通过订阅特定的主题来接收来自 IoT 设备的数据。 ```javascript // 示例 JavaScript MQTT 客户端设置 const mqtt = require('mqtt'); const client = mqtt.connect('mqtt://your_mqtt_server'); client.on('connect', () => { console.log('Connected to MQTT server'); }); client.subscribe('data_topic'); // 替换为实际的主题名 client.on('message', (topic, message) => { handleNewData(JSON.parse(message.toString())); // 这里处理接收到的新数据 }); function handleNewData(data) { // 使用接收到的数据更新 ECharts 图表 } ``` ### 步骤 2: 更新 ECharts 数据源 然后,在前端应用使用 ECharts 初始化图表,并设置其数据源为从 MQTT 接收的 JSON 对象。通常,这会涉及到监听和更新图表的 `onUpdate` 或其他适当的事件处理器。 ```javascript import * as echarts from 'echarts'; var myChart = echarts.init(document.getElementById('main')); var option; option = { title: { text: '数据流', subtext: '实时更新' }, tooltip: {}, xAxis: { data: [] }, yAxis: {}, series: [{ name: '值', type: 'bar' }] }; myChart.setOption(option); function updateChart(data) { if (option.xAxis.data.length > 0) { option.xAxis.data.shift(); } option.xAxis.data.push(new Date()); option.series.data = [data]; myChart.setOption(option); } // 将处理后的数据发送给 ECharts 的 updateChart 函数 handleNewData({ value: your_value }) => updateChart(your_value) ``` ### 相关问题: 1. **如何选择合适的 MQTT 主题**?主题应明确指向所需数据的来源,并考虑到数据的组织结构便于后续处理。 2. **如何优化 MQTT 和 ECharts 性能**?涉及数据频率、缓冲机制以及如何减少不必要的网络请求。 3. **安全性考量**:如何保护 MQTT 消息传输的安全性和私密性,特别是对于敏感数据的处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

军大君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值