Echarts创建动态图表

   偶然的机会,发现echarts可以制作比较精美的图表,进而小小学习了一下,也算知道了一些基本的常识,现与大家进行分享。    

    ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖轻量级的 Canvas 类库 ZRender,提供直观,生动,可交互,可高度个性化定制的数据可视化图表。

    然而我们只是想要用这一项技术单纯的去实现相应的图表展现的功能即可。在这里我将用echarts中的柱状图和饼状图作为例子,连接数据库,为大家展示动态的数据。

一,动态展示柱状图

   首先让大家看看整体的效果:

     怎么连接数据库我就不详细说了,这边我将后台整体介绍一下。

    1.后台新建一张表,共三个字段:id,count name

    2.通过sql语句查询出所有的数据,存放在list集合中

    3.通过数据的组装,将值以特定的类型反馈给前台进行展示,前台拿到值后解析赋值即可。

------------------------------------------------------------------------------------------------------------------------------------------

   现在是后台数据的组装代码

@Override
    public Map<String,Object> queryBarGraphList(){
        //查询出所有柱状图的数据
        List<Bargraph> list = bargraphMapper.queryList();
        log.info("查询出数据库柱状图数据共{}条",list.size());
        //装载查询出的不同的数据
        Map<String,Object> maps = new HashMap<>();
        String [] counts = new String[list.size()];
        String [] names = new String[list.size()];
        int i=0;
        for(Bargraph bargraph:list){
            counts[i] = bargraph.getCount();
            names[i] = bargraph.getName();
            i++;
        }
        maps.put("counts",counts);
        maps.put("names",names);
        return maps;
    }

通过map的形式给到前台,前台分别将值输送到相应的地方

----------------------------------------------------------------------------------------------------------------------------------------

现在是前台数据的展现代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 800px;height:400px;"></div>
<script type="text/javascript" src="../lib/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="../lib/echarts.min.js"></script>
<script type="text/javascript">

    // 基于准备好的dom,初始化echartjquery-2.1.1.min.jss实例
    var myChart=echarts.init(document.getElementById("main"));

    // 指定图表的配置项和数据

    myChart.setOption({
        title:{
            text:'echarts入门示例'
        },
        tooltip:{

        },
        legend:{
            data:['销量']
        },
        xAxis:{
            data:[]
        },
        yAxis:{

        },
        series:[
            {
                name:'销量',
                type:'bar',
                data:[]
            },
        ]
    });


    $.ajax({
        type : 'get',
        url :'/echarts/queryBarGraphList',
        async: false,
        success : function(data){
            myChart.setOption({
                xAxis:{
                    data:data.names
                },
                series:[
                    {
                        name:'销量',
                        data:data.counts
                    },
                ]
            });
        }
    });
</script>
</body>
</html>

注意:哪里需要赋值,就先定义需要赋值的地方为一个数组格式,然后将后台传递过来的值显示在相应的地方即可,事实证明,echarts就是将后台数据进行灵活的展现,借此达到高度可定制的目的。

二:动态展示扇形图

依旧先看下整个的效果图:

这里很难受,这边定义的扇形图的区域名称就是出不来,但是可以出图,这个问题我还是要仔细研究下。

后台代码和上方大同小异,只是前端代码有所改动,这边我就将前端统一代码上一段吧。

-------------------------------------------------------------------------------------------------------------------------------------------------

现在是前台数据的展现代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 800px;height:400px;"></div>
<div id="piemain" style="width: 700px;height:400px;"></div>
<script type="text/javascript" src="../lib/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="../lib/echarts.min.js"></script>
<script type="text/javascript">

    // 基于准备好的dom,初始化echartjquery-2.1.1.min.jss实例
    var myChart=echarts.init(document.getElementById("main"));
    var myChart2=echarts.init(document.getElementById("piemain"));

    // 指定图表的配置项和数据

    myChart.setOption({
        title:{
            text:'echarts入门示例'
        },
        tooltip:{

        },
        legend:{
            data:['销量']
        },
        xAxis:{
            data:[]
        },
        yAxis:{

        },
        series:[
            {
                name:'销量',
                type:'bar',
                data:[]
            },
        ]
    });


    $.ajax({
        type : 'get',
        url :'/echarts/queryBarGraphList',
        async: false,
        success : function(data){
            myChart.setOption({
                xAxis:{
                    data:data.names
                },
                series:[
                    {
                        name:'销量',
                        data:data.counts
                    },
                ]
            });
        }
    });

    myChart2.setOption({
        title : {
            text: '女汉子年龄分布',
            subtext: '独家报道',
            x:'center'
        },
        tooltip : {
            trigger: 'item',
            formatter: "{a} <br/>{b} : {c} 岁"
        },
        legend: {
            orient : 'vertical',
            x : 'left',
            data:[]
        },
        toolbox: {
            show : true,
            feature : {
                mark : {show: true},
                dataView : {show: true, readOnly: false},
                magicType : {
                    show: true,
                    type: ['pie', 'funnel'],
                    option: {
                        funnel: {
                            x: '25%',
                            width: '50%',
                            funnelAlign: 'left',
                            max: 1548
                        }
                    }
                },
                restore : {show: true},
                saveAsImage : {show: true}
            }
        },
        calculable : true,
        series : [
            {
                name:'女汉子',
                type:'pie',
                radius : '55%',//饼图的半径大小
                center: ['50%', '60%'],//饼图的位置
                data:[]
            }
        ]
    });

    $.ajax({
        type : 'get',
        url :'/echarts/queryPieImageList',
        async: false,
        success : function(data){
            myChart2.setOption({
                legend: {
                    data: data.valuess
                },
                series:[
                    {
                        data:data.names
                    },
                ]
            });
        }
    });
</script>
</body>
</html>

这边定义了一个peimain的div,将值直接定义进去即可,这边定义的names为50,30,20这样的数字,然后前台拿到后进行内部解析,但是这里为什么值中文显示不出来,希望前端大佬看到后可以为我解惑。

    这次算是初步了解了下,知道整体的大致流程,同时也知道了echarts是一款强大的图形化制作工具,等以后真正在项目中实战的时候再继续积累更加充足的技巧。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
echarts 是一个优秀的数据可视化库,它支持多种图表类型,比如折线图、柱状图、饼图、散点图等。用户可以利用echarts轻松创建多个图表,以便更好地展示数据信息。 首先,用户可以利用 echarts 创建多个不同类型的图表来展示数据。比如,在一个页面上,用户可以同时展示柱状图和折线图,这样可以更全面地呈现数据的变化趋势和对比关系。用户也可以将多个相似类型的图表放在一起进行对比分析,比如同一时间段内不同产品的销售额情况。 其次,echarts 还支持图表的联动功能。用户可以设置多个图表之间的联动,这样当一个图表发生变化时,其他相关的图表也会随之变化。比如,用户可以设置一个主图表和多个从图表,当用户选择主图表中的某个数据项时,从图表中相应的数据也会进行联动显示,帮助用户更好地理解数据之间的关联。 此外,echarts 还支持图表的嵌套和层叠显示。用户可以将多个图表嵌套在同一个容器中,实现图表的分层显示,帮助用户更好地比较不同尺度或维度的数据。比如,在一个地图上同时显示地理位置分布图和销售额热力图,帮助用户更好地理解销售情况与地理位置的关系。 总之,echarts 支持多个图表创建、联动和嵌套显示,用户可以充分利用echarts的功能来更好地展示和分析数据信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值