首页 前端知识 day60_echarts

day60_echarts

2024-06-10 23:06:03 前端知识 前端哥 875 722 我要收藏

Echarts

ECharts是一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。ECharts最初由百度团队开源,并于2018年初捐赠给Apache基金会,成为ASF孵化级项目。

2021年1月26日晚,Apache基金会官方宣布ECharts项目正式毕业。1月28日,ECharts 5线上发布会举行

echarts文档:
菜鸟教程:https://www.runoob.com/echarts/echarts-tutorial.html
官网: https://echarts.apache.org/zh/index.html

所有的配置:
https://echarts.apache.org/zh/option.html#title

下载地址或者使用CDN:
https://echarts.apache.org/zh/download.html

入门使用

  1. 下载js
  2. 页面准备存放图标的dom
  3. cv官方代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<!-- 为 ECharts 准备一个定义了宽高的 DOM -->
<div id="main" style="width: 600px;height:400px;"></div>
<script src="/lib/echarts.min.js"></script>
<script type="text/javascript">
  // 基于准备好的dom,初始化echarts实例
  var myChart = echarts.init(document.getElementById('main'));

  // 指定图表的配置项和数据
  var option = {
    title: {
      text: 'ECharts 入门示例'
    },
    tooltip: {},
    legend: {
      data: ['销量']
    },
    xAxis: {
      data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
    },
    yAxis: {},
    series: [
      {
        name: '销量',
        type: 'bar',
        data: [5, 20, 36, 10, 10, 20]
      }
    ]
  };

  // 使用刚指定的配置项和数据显示图表。
  myChart.setOption(option);
</script>
</body>
</html>

image-20230619231210101

各种图形

改变series:中的type即可

  • type:‘bar’ 柱状图

  • type:‘line’ 折线图

  • type:‘pie’ 饼状图

    具体参考常用图表类型 - 应用篇 - Handbook - Apache ECharts

交互

异步数据加载

动态的异步数据 - 数据处理 - 应用篇 - Handbook - Apache ECharts

设置[报表]按钮

<script type="text/html" id="toolbarDemo">
    <div class="layui-btn-container">
    <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" lay-event="add"> 添加</button>
    <button class="layui-btn layui-btn-sm layui-btn-danger data-delete-btn" lay-event="deleteBatch"> 删除 </button>
    <button class="layui-btn layui-btn-sm layui-btn-normal" lay-event="baobiao"> 报表</button>
    </div>
</script>

绑定事件

 } else if (obj.event === 'baobiao') {
     let content = miniPage.getHrefContent('/page/house/baobiao.html');
     let openWH = miniPage.getOpenWidthHeight();
     let index = layer.open({
         title: '报表统计',
         type: 1,
         shade: 0.2,
         maxmin: true,
         shadeClose: true,
         area: [openWH[0] + 'px', openWH[1] + 'px'],
         offset: [openWH[2] + 'px', openWH[3] + 'px'],
         content: content,
     });
     $(window).on("resize", function () {
         layer.full(index);
     });
 }

baobiao.html

因为是单页面开发,所以baobiao.html页面就是一个div容器

<div class="layuimini-main">
    <!-- 报表容器 -->
    <div id="main" style="width: 600px;height:400px;"></div>
</div>
<script src="/lib/echarts.min.js"></script>
<script type="text/javascript">
    var myChart = echarts.init(document.getElementById('main'));
    myChart.setOption({
        title: {
            text: '房屋价格'
        },
        tooltip: {},
        legend: {
            data: ['价格']
        },
        xAxis: {
            data: []
        },
        yAxis: {},
        series: [
            {
                name: '价格',
                type: 'bar',
                data: []
            }
        ]
    });
    layui.use(['jquery'], function () {
        let $ = layui.jquery;
        $(function (){
            $.get('/house/list/bb.do', function (ret) {
                // 填入数据
                myChart.setOption({
                    xAxis: {
                        // 后台返回的数据,后台需要返回的是数组/list集合
                        data: ret.data.name
                    },
                    series: [
                        {
                            // 根据名字对应到相应的系列
                            name: '销量',
                            data: ret.data.num
                        }
                    ]
                });
            })
        })
    })
</script>

后台

// HouseController.java
@RequestMapping("/list/bb")
public ResultData listBaobiao(){
    ResultData data = houseService.findAll4Baobiao();
    return data;
}

// HouseServiceImpl.java
@Override
public ResultData findAll4Baobiao() {
    //1.查询全部
    List<House> list = houseMapper.findAll4Baobiao();
    //2.组装数据
    Map<String, ArrayList> map=new HashMap<>();
    map.put("name",new ArrayList());
    map.put("num",new ArrayList());
    list.forEach(d->{
        map.get("name").add(d.getAddress());
        map.get("num").add(d.getPrice());
    });
    return ResultData.ok(map);
}

image-20230620000230706

image-20230620000253124


练习:

按照房屋朝向,统计每个朝向的平均房价

    @Override
    public ResultData findAll4Baobiao2() {
        List<Map<String, Object>> list = houseMapper.findAll4Baobiao2( );
        System.out.println("报表--->" + list);

        ArrayList<Object> priceList = new ArrayList<>( );
        ArrayList<Object> dirList = new ArrayList<>( );
        for (Map<String, Object> map : list) {
            Object price = map.get("price");
            priceList.add(price);

            Object dir = map.get("dir");
            dirList.add(dir);
        }

        HashMap<String, List<Object>> resultMap = new HashMap<>( );
        resultMap.put("dirs",dirList);
        resultMap.put("price",priceList);
        return ResultData.ok(resultMap);
    }
public interface HouseMapper {
    // 返回的是一个Map
    List<Map<String, Object>> findAll4Baobiao2();
}
 <select id="findAll4Baobiao2" resultType="java.util.Map">
        select dir,avg(price) price from house group by dir
  </select>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 600px;height:400px;"></div>

<script src="echarts.min.js"></script>
<script src="/lib/jquery-3.4.1/jquery-3.4.1.min.js"></script>
<script>
  // 基于准备好的dom,初始化echarts实例
  var myChart = echarts.init(document.getElementById('main'));
  $.get('/house/list/bb2.do',function (ret){
    // 绘制图表
    myChart.setOption({
      title: {
        text: '房屋朝向均价'
      },
      tooltip: {},
      xAxis: {
        data: ret.data.dirs
      },
      yAxis: {},
      series: [{
        name: '均价',
        type: 'bar',// bar柱状图
        data: ret.data.price
      }]
    });
  })

</script>
转载请注明出处或者链接地址:https://www.qianduange.cn//article/11809.html
标签
评论
发布的文章

第一次实验补充

2024-06-18 09:06:14

html5shiv,从入门到深入

2024-05-09 10:05:07

html5基础入门

2024-06-18 09:06:07

HTML5学习简记

2024-06-18 09:06:20

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!