Echarts 折线图动态加载数据

页面代码(用来显示折线图)

<div id="container" style="height: 500px"></div>

先引入Echarts的js

<script src="/js/echarts.min.js"></script>

 看代码 

var dom = document.getElementById("container");
var myChart = echarts.init(dom);
var year = new Date().getFullYear();
option = null;
    option = {
        title: {
            text: year +'年文章点赞数',
            left : '3%'
        },
        tooltip: {
            trigger: 'axis'
        },
        grid: {
            left: '3%',
            right: '4%',
            bottom: '3%',
            containLabel: true
        },
        toolbox: {
            right :'4%',
            feature: {
                saveAsImage: {}
            }
        },
        xAxis: {
            type: 'category',
            boundaryGap: false,
            data: ['一月','二月','三月','四月','五月','六月','七月','八月','八月','九月','十月','十一月','十二月']
        },
        yAxis: {
            type: 'value',
            min : 0,
        },
        series: [
        ]
    };

 下面是动态填充数据

// confluenceInfs 是一个 Json 对象
for(var i = 0 ; i < confluenceInfs.length ; i ++){
        confluence = confluenceInfs[i];
        // 创建一个对象,用来存每个JSON的数据
        // 最后的数据格式是 
        // {name : '' , type : '', data :''}
        // 不是对象的话 , 可能会报错了  意思是要指定 series 的type 
        var it = new Object();
        it.name = confluence.PCI_NAME;
        it.type = "line";
        // data 的格式是 [a,b,c] 格式不一致的话 会导致没有图
        it.data =[confluence.PCI_JANUARY,confluence.PCI_FEBRUARY,confluence.PCI_MARCH,confluence.PCI_APRIL,confluence.PCI_MAY,confluence.PCI_JUNE,confluence.PCI_JULY,confluence.PCI_AUGUST,confluence.PCI_SEPTEMBER,confluence.PCI_OCTOBER,confluence.PCI_NOVEMBER,confluence.PCI_DECEMBER];
        datas.push(it);
    }
    
    option.series = datas;

    myChart.setOption(option);

 后台代码

 @GetMapping(value = {"/index", "/"})
    public String index(Model model, HttpSession session) {
        String userid = session.getAttribute(Constant.SESSION_CURRENT_USERID).toString();
        Map map = new HashMap<>();
        map.put("userId", userid);
        List<Map> pubIntegralDictList = pubIntegralDictMapper.getUsersInt(map);
        if (!pubIntegralDictList.isEmpty()) {
            model.addAttribute("pubIntegral", pubIntegralDictList.get(0));
        }
        Calendar calendar = Calendar.getInstance();
        map.put("time", calendar.get(Calendar.YEAR));
        // 用于前台页面数据填充
        // 查询出每月的文章
        List<Map> confluenceInfs = pubConfluenceInfMapper.getConfluence(map);
        List list = new ArrayList<>();
        // 将Map 转换为 JSON
        for (int i = 0; i < confluenceInfs.size(); i++) {
            list.add(JSONObject.fromObject(confluenceInfs.get(i)));
        }
        model.addAttribute("confluenceInfs", list);
        return "index";
    }

过多的后台代码我就不多贴了 

最后的效果图(由于部分月份没有数据)

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Echarts是一款基于JavaScript的开源可视化库,可以通过使用Echarts的API和配置项,实现折线图动态获取数据。下面以一个简单的示例进行说明: 首先,需要在HTML文件中引入Echarts的脚本文件,例如: ```html <script src="https://cdn.jsdelivr.net/npm/echarts@4.9.0/dist/echarts.min.js"></script> ``` 然后,通过创建一个DOM容器,用于展示折线图,例如: ```html <div id="chartContainer" style="width: 600px; height: 400px;"></div> ``` 接下来,在JavaScript中,定义一个用于获取数据的函数,例如: ```javascript function fetchData() { // 这里可以通过异步请求或其他方式获取数据 // 假设获取到的数据为一个包含时间和数值的数组 var data = [ { time: '2021-01-01', value: 100 }, { time: '2021-01-02', value: 150 }, { time: '2021-01-03', value: 200 }, // ... ]; // 调用函数更新图表 updateChart(data); } ``` 然后,定义一个更新图表的函数,用于根据新的数据进行图表的更新,例如: ```javascript function updateChart(data) { var chartContainer = document.getElementById('chartContainer'); var chart = echarts.init(chartContainer); var option = { xAxis: { type: 'category', data: data.map(item => item.time) // x轴数据为时间 }, yAxis: { type: 'value' }, series: [{ type: 'line', data: data.map(item => item.value) // y轴数据为数值 }] }; chart.setOption(option); } ``` 最后,可以在合适的时机(如页面加载完毕、按钮点击等)调用`fetchData`函数,动态获取数据并更新图表: ```javascript // 页面加载完毕后获取并更新数据 window.onload = function() { fetchData(); }; ``` 以上示例中,`fetchData`函数模拟了获取数据的过程,更新图表时使用`updateChart`函数根据新的数据进行更新。通过调用Echarts的API和配置项,我们可以实现折线图动态获取数据
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值