• 前端统计图 echarts 实现简单柱状图


    前端统计图   echarts实现简单柱状图

     1. 引入 ECharts

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <!-- 引入 ECharts 文件 -->
        <script src="echarts.min.js"></script>
    </head>
    

    2. 绘制一个简单的图表

    在绘图前我们需要为 ECharts 准备一个具备高宽的 DOM 容器。

    <body>
        <!-- 为 ECharts 准备一个具备大小(宽高)的 DOM -->
        <div id="main" style=" 600px;height:400px;"></div>
    </body>

    然后就可以通过 echarts.init 方法初始化一个 echarts 实例并通过 setOption 方法生成一个简单的柱状图,下面是完整代码。

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>ECharts</title>
        <!-- 引入 echarts.js -->
        <script src="echarts.min.js"></script>
    </head>
    <body>
        <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
        <div id="main" style=" 600px;height:400px;"></div>
        <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>

    这样你的第一个图表就诞生了!



    案列:

    前端代码:

    <!DOCTYPE html> <html lang="zh" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!--360浏览器优先以webkit内核解析--> <title>高句丽介绍</title> <link rel="shortcut icon" href="favicon.ico"> <link href="../static/css/bootstrap.min.css" th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/> <link href="../static/css/font-awesome.min.css" th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/> <link href="../static/css/main/animate.min.css" th:href="@{/css/main/animate.min.css}" rel="stylesheet"/> <link href="../static/css/main/style.min862f.css" th:href="@{/css/main/style.min862f.css}" rel="stylesheet"/> <style lang="css"> td { align: center; valign: middle; text-align: center; vertical-align: middle; } </style> </head> <body class="gray-bg"> <div class="wrapper wrapper-content"> <div class="row"> <div class="col-sm-9"> <div class="ibox float-e-margins"> <div class="ibox-title"> <h4>资源数量统计表</h4> </div> <div class="ibox-content"> <table border="1" cellspacing="0" style="height: 200px; 100%;font-size: 0.5em" > <thead> <tr> <td>类型</td> <td>总数</td> <!-- <td>已发布</td> <td>未发布</td>--> </tr> </thead> <tbody> <tr th:each="a : ${list}"> <td th:text="${a.type}"></td> <td th:text="${a.total}"></td> <!--<td th:text="${a.publish}"></td> <td th:text="${a.notPublish}"></td>--> </tr> </tbody> </table> </div> </div> </div> </div> <div class="col-sm-12"> <div class="ibox float-e-margins"> <div class="ibox-title"> <h4>资源数量统计图</h4> </div> <div class="ibox-content"> <div id="bar" style="height: 200px; 100%"></div> </div> </div> </div> </div> <script th:src="@{/js/jquery.min.js}"></script> <script th:src="@{/js/bootstrap.min.js}"></script> <!-- echart--> <script th:src="@{/ajax/libs/echarts/echarts.common.min.js}"></script> <script th:inline="javascript"> // 基于准备好的dom,初始化echarts实例 var myChart = echarts.init(document.getElementById('bar')); var list = [[${list}]]; var legendDate = []; var total = []; //var notPublish = []; for (var i = 0; i < list.length; i++) { legendDate.push(list[i].type) total.push(list[i].total) // notPublish.push(list[i].notPublish) } console.log(legendDate); // 指定图表的配置项和数据 option = { color: ['#3398DB'], tooltip: { trigger: 'axis', axisPointer: { // 坐标轴指示器,坐标轴触发有效 type: 'shadow' // 默认为直线,可选为:'line' | 'shadow' } }, legend: { data: '总数' }, grid: { left: '2%', right: '3%', bottom: '2%', containLabel: true }, xAxis: [{ type: 'category', data: legendDate, textStyle: { color: '#c3dbff', //更改坐标轴文字颜色 fontSize : 30 //更改坐标轴文字大小 }, axisLabel: {//x轴文字垂直显示 interval: 0, formatter:function(value) { return value.split("").join(" "); } } // axisTick: { // alignWithLabel: true // } }], yAxis: { type: 'value' }, series: [ { name: '资源总量', type: 'bar', stack: '总量', label: { normal: { show: true, position: 'insideRight' } }, data: total }/*, { name: '未发布', type: 'bar', stack: '总量', label: { normal: { show: true, position: 'insideRight' } }, data: notPublish }*/ ] }; // 使用刚指定的配置项和数据显示图表。 myChart.setOption(option); </script> </body> </html>

    后台代码:


    package cn.cmodes.project.module.statistics; import cn.cmodes.project.module.articleResource.service.IArticleResourceService; import cn.cmodes.project.module.articleinformation.service.IArticleinformationService; import cn.cmodes.project.module.bookResource.service.IBookResourceService; import cn.cmodes.project.module.bookinformation.service.IBookinformationService; import cn.cmodes.project.module.mediaphoto.service.IMediaphotoService; import cn.cmodes.project.module.resource.service.IResourceService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import java.util.ArrayList; import java.util.HashMap;
    /** * 统计分析 * @author : di * @date : 2018-11-28 15:53 */ @Controller @RequestMapping("/module/statistics") public class statisticsController { @Autowired private IBookResourceService bookResourceService; @Autowired private IArticleResourceService articleResourceService; @Autowired private IResourceService resourceService; @Autowired private IArticleinformationService iArticleinformationService; @Autowired private IBookinformationService iBookinformationService; @Autowired private IMediaphotoService iMediaphotoService; @GetMapping() public String statistics(ModelMap mmap) { ArrayList<Object> result = new ArrayList<>(); HashMap<String, Object> audio = new HashMap<>(); audio.put("type","音频"); audio.put("total",iMediaphotoService.selectTypeTatal(1)); result.add(audio); HashMap<String, Object> map = new HashMap<>(); map.put("type","地图"); map.put("total",iMediaphotoService.selectTypeTatal(2)); result.add(map); HashMap<String, Object> picture = new HashMap<>(); picture.put("type","图片"); picture.put("total",iMediaphotoService.selectTypeTatal(3)); result.add(picture); HashMap<String, Object> video = new HashMap<>(); video.put("type","视频"); video.put("total",iMediaphotoService.selectTypeTatal(4)); result.add(video); HashMap<String, Object> archaeologicaldata = new HashMap<>(); archaeologicaldata.put("type","考古资料"); archaeologicaldata.put("total",iArticleinformationService.selectTypeTatal(1)); result.add(archaeologicaldata); HashMap<String, Object> archaeology = new HashMap<>(); archaeology.put("type","考古简报"); archaeology.put("total",iArticleinformationService.selectTypeTatal(2)); result.add(archaeology); HashMap<String, Object> conference = new HashMap<>(); conference.put("type","会议论文"); conference.put("total",iArticleinformationService.selectTypeTatal(3)); result.add(conference); HashMap<String, Object> dissertation = new HashMap<>(); dissertation.put("type","学术论文"); dissertation.put("total",iArticleinformationService.selectTypeTatal(4)); result.add(dissertation); HashMap<String, Object> journalarticles = new HashMap<>(); journalarticles.put("type","期刊论文"); journalarticles.put("total",iArticleinformationService.selectTypeTatal(5)); result.add(journalarticles); HashMap<String, Object> mediaarticles = new HashMap<>(); mediaarticles.put("type","媒体文章"); mediaarticles.put("total",iArticleinformationService.selectTypeTatal(6)); result.add(mediaarticles); HashMap<String, Object> periodical = new HashMap<>(); periodical.put("type","期刊"); periodical.put("total",iArticleinformationService.selectTypeTatal(7)); result.add(periodical); HashMap<String, Object> rubbingrubbings = new HashMap<>(); rubbingrubbings.put("type","石刻拓片"); rubbingrubbings.put("total",iArticleinformationService.selectTypeTatal(8)); result.add(rubbingrubbings); HashMap<String, Object> stoneinscription = new HashMap<>(); stoneinscription.put("type","石刻专题"); stoneinscription.put("total",iArticleinformationService.selectTypeTatal(9)); result.add(stoneinscription); HashMap<String, Object> ancientWorks = new HashMap<>(); ancientWorks.put("type","古籍"); ancientWorks.put("total",iBookinformationService.selectTypeTatal(10)); result.add(ancientWorks); HashMap<String, Object> book = new HashMap<>(); book.put("type","图书"); book.put("total",iBookinformationService.selectTypeTatal(11)); result.add(book); HashMap<String, Object> catalog = new HashMap<>(); catalog.put("type","目录"); catalog.put("total",iBookinformationService.selectTypeTatal(12)); result.add(catalog); HashMap<String, Object> itemreport = new HashMap<>(); itemreport.put("type","结项报告"); itemreport.put("total",iBookinformationService.selectTypeTatal(13)); result.add(itemreport); HashMap<String, Object> proceedings = new HashMap<>(); proceedings.put("type","论文集"); proceedings.put("total",iBookinformationService.selectTypeTatal(14)); result.add(proceedings); HashMap<String, Object> stonealbum = new HashMap<>(); stonealbum.put("type","石刻专题"); stonealbum.put("total",iBookinformationService.selectTypeTatal(15)); result.add(stonealbum); HashMap<String, Object> stonecompilation = new HashMap<>(); stonecompilation.put("type","石刻汇编"); stonecompilation.put("total",iBookinformationService.selectTypeTatal(16)); result.add(stonecompilation); mmap.put("list",result); return "module/statistics/statistics"; } }

    浏览器效果:

    官方网址


    折线图:


    <!DOCTYPE html> <html lang="zh" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!--360浏览器优先以webkit内核解析--> <title>高句丽介绍</title> <link rel="shortcut icon" href="favicon.ico"> <link href="../static/css/bootstrap.min.css" th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/> <link href="../static/css/font-awesome.min.css" th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/> <link href="../static/css/main/animate.min.css" th:href="@{/css/main/animate.min.css}" rel="stylesheet"/> <link href="../static/css/main/style.min862f.css" th:href="@{/css/main/style.min862f.css}" rel="stylesheet"/> <style lang="css"> td { align: center; valign: middle; text-align: center; vertical-align: middle; } </style> </head> <body class="gray-bg"> <div class="wrapper wrapper-content"> <div class="row"> <div class="col-sm-9"> <div class="ibox float-e-margins"> <div class="ibox-title"> <h4>资源数量统计表</h4> </div> <div class="ibox-content"> <table border="1" cellspacing="0" style="height: 200px; 100%;font-size: 0.5em" > <thead> <tr> <td>类型</td> <td>总数</td> <!-- <td>已发布</td> <td>未发布</td>--> </tr> </thead> <tbody> <tr th:each="a : ${list}"> <td th:text="${a.type}"></td> <td th:text="${a.total}"></td> <!--<td th:text="${a.publish}"></td> <td th:text="${a.notPublish}"></td>--> </tr> </tbody> </table> </div> </div> </div> </div> <div class="col-sm-12"> <div class="ibox float-e-margins"> <div class="ibox-title"> <h4>资源数量统计图</h4> </div> <div class="ibox-content"> <div id="bar" style="height: 200px; 100%"></div> </div> </div> </div> <div class="col-sm-12"> <div class="ibox float-e-margins"> <div class="ibox-title"> <h4>资源数量统计图</h4> </div> <div class="ibox-content"> <div id="bars" style="height: 200px; 100%"></div> </div> </div> </div> </div> <script th:src="@{/js/jquery.min.js}"></script> <script th:src="@{/js/bootstrap.min.js}"></script> <!-- echart--> <script th:src="@{/ajax/libs/echarts/echarts.common.min.js}"></script> <script th:inline="javascript"> // 基于准备好的dom,初始化echarts实例 var myChart = echarts.init(document.getElementById('bar')); //折线 var myCharts = echarts.init(document.getElementById('bars')); var list = [[${list}]]; var legendDate = []; var total = []; //var notPublish = []; for (var i = 0; i < list.length; i++) { legendDate.push(list[i].type) total.push(list[i].total) // notPublish.push(list[i].notPublish) } // 指定图表的配置项和数据 option = { color: ['#3398DB'], tooltip: { trigger: 'axis', axisPointer: { // 坐标轴指示器,坐标轴触发有效 type: 'shadow' // 默认为直线,可选为:'line' | 'shadow' } }, legend: { data: '总数' }, grid: { left: '2%', right: '3%', bottom: '2%', containLabel: true }, xAxis: [{ type: 'category', data: legendDate, textStyle: { color: '#c3dbff', //更改坐标轴文字颜色 fontSize : 30 //更改坐标轴文字大小 }, axisLabel: {//x轴文字垂直显示 interval: 0, formatter:function(value) { return value.split("").join(" "); } } // axisTick: { // alignWithLabel: true // } }], yAxis: { type: 'value' }, series: [ { name: '资源总量', type: 'bar', stack: '总量', label: { normal: { show: true, position: 'insideRight' } }, data: total }/*, { name: '未发布', type: 'bar', stack: '总量', label: { normal: { show: true, position: 'insideRight' } }, data: notPublish }*/ ] }; //折线 options = { title: { text: '折线图堆叠' }, tooltip: { trigger: 'axis' }, legend: { data:legendDate }, grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true }, toolbox: { feature: { saveAsImage: {} } }, xAxis: { type: 'category', boundaryGap: false, data: legendDate }, yAxis: { type: 'value' }, series: [{ name: '资源总量', stack: '总量', label: { normal: { show: true, position: 'insideRight' } }, data: total, type: 'line', areaStyle: {} }] }; // 使用刚指定的配置项和数据显示图表。 myChart.setOption(option); myCharts.setOption(options); </script> </body> </html>


    
    
     
  • 相关阅读:
    用PHP实现 HTTP断点续传、分块下载文件(Socket)
    织梦cms 判断当前页面是否为首页和栏目页高亮
    Go Exec 僵尸与孤儿进程
    Nginx 配置 SSL,很系统!很完整!解决 Nginx 报错 nginx: [emerg] unknown directive "ssl" in /usr/local/nginx/conf/nginx.conf
    CentOS7安装及配置 Zabbix Server全步骤,超详细教程
    CentOS7安装及配置 Zabbix Agent全步骤,超详细教程
    top查看cpu消耗最高线程
    Kisso 使用笔记(个人总结,一直在更新)
    Android问题总汇
    关于Vue中checkbox复选框的双向数据绑定问题
  • 原文地址:https://www.cnblogs.com/zhukaixin/p/10517542.html
Copyright © 2020-2023  润新知