百度ECharts图形报表的介绍以及应用案例理解

百度echart柱图、折线图、饼图、Map类型等类似视图的动态加载数据 这几天接触的一个项目需要使用到百度的echart,所以简单查找并实验了几款比较简单且适用性较广的例子,做了几个简单的Demo,一来是对echart有所了解,二来也是记录一下,方便以后进一步的优化。 首先,是echart的js文件,一般情况下,这一个文件基本就可以了,但是由于本文还需要涉及到地图类型的处理,所以还需要一个地图包,,这个echart官网已经下架了,说是因为部分矢量数据不正确,建议用百... 阅读详情

图形报表ECharts

一、Echarts简介

ECharts缩写来自Enterprise Charts,商业级数据图表,是apache的一个开源的使用 JavaScript实现的数据可视化工具,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖轻量级的矢量图 形库 ZRender,提供直观、交互丰富、可高度个性化定制的数据可视化图表。

官网 https://echarts.apache.org/zh/index.html

下载地址:https://echarts.apache.org/zh/download.html

解压后的文件中只需要将echarts.js 导入到工程中即可

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YlA1l0kX-1657031809561)(E:\Java资料\笔记整理\JavaUp\笔记整理\图形报表ECharts.assets\image-20220630232440383.png)]

二、Echarts.js入门案例

通过标签方式直接引入构建好的 echarts 文件

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

为 ECharts 准备一个具备高宽的 DOM 容器。

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

通过 echarts.init 方法初始化一个 echarts 实例并通过 setOption 方法生成一个简单的柱状图

<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>

效果如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HkwH8AVX-1657031809562)(E:\Java资料\笔记整理\JavaUp\笔记整理\图形报表ECharts.assets\image-20220630232825558.png)]

三、Echarts使用总结

通过官方案例我们可以发现,使用ECharts展示图表效果,关键点在于确定此图表所需的 数据格式,然后按照此数据格式提供数据就可以了,我们无须关注效果是如何渲染出来 的。在实际应用中,我们要展示的数据往往存储在数据库中,所以我们可以发送ajax请求获取 数据库中的数据并转为图表所需的数据即可。

四、案例

1、使用Echarts绘制会员数量的折线图

前端代码
<script src="../plugins/echarts/echarts.js"></script>
<script type="text/javascript">
        // 基于准备好的dom,初始化echarts实例
        var myChart1 = echarts.init(document.getElementById('line'));
        // 使用刚指定的配置项和数据显示图表。
        //myChart.setOption(option);
    
axios.get("/report/getMemberReport.do").then((res)=>{
        myChart1.setOption(
                            {
                                title: {
                                    text: '会员数量'
                                },
                                tooltip: {},
                                legend: {
                                    data:['会员数量']
                                },
                                xAxis: {
                                    data: res.data.data.months
                                },
                                yAxis: {
                                    type:'value'
                                },
                                series: [{
                                    name: '会员数量',
                                    type: 'line',
                                    data: res.data.data.memberCount
                                }]
                            });
    });
</script>

需要的json格式数据为:

"data":{
  "months":["2019.01","2019.02","2019.03","2019.04"], 
  "memberCount":[3,4,8,10] 
}, 
"flag":true, 
"message":"获取会员统计数据成功"
后端代码

controller

@RestController
@RequestMapping("/report")
public class ReportController {
    @Reference
    private MemberService memberService;
    //会员数量折线图数据
    @RequestMapping("/getMemberReport")
    public Result getMemberReport(){
        Map<String,Object> map = new HashMap<>();
        List<String> months = new ArrayList();
        Calendar calendar = Calendar.getInstance();//获得日历对象,模拟时间就是当前时间
        //计算过去一年的12个月
        calendar.add(Calendar.MONTH,-12);//获得当前时间往前推12个月的时间
        for(int i=0;i<12;i++){
            calendar.add(Calendar.MONTH,1);//获得当前时间往后推一个月日期
            Date date = calendar.getTime();
            months.add(new SimpleDateFormat("yyyy.MM").format(date));
        }
        map.put("months",months);
        List<Integer> memberCount = memberService.findMemberCountByMonths(months);
        map.put("memberCount",memberCount);
        return new Result(true, MessageConstant.GET_MEMBER_NUMBER_REPORT_SUCCESS,map);
    }

}

接口中方法

 List<Integer> findMemberCountByMonths(List<String> months);

实现类

@Service(interfaceClass = MemberService.class)
@Transactional
public class MemberServiceImpl implements MemberService {

    @Resource
    private MemberMapper memberMapper;
    @Override
    public List<Integer> findMemberCountByMonths(List<String> months) {
        List<Integer> list = new ArrayList<>();
        for(String date : months){
            String newdata = months+".31"; //2019.05.31;
            QueryWrapper<Member>  queryWrapper = new QueryWrapper<>();
            queryWrapper.lt("regTime",date);
            Integer selectCount = memberMapper.selectCount(queryWrapper);
            list.add(selectCount);
        }
        return list;
    }
}

2、绘制饼图

会员可以通过移动端自助进行体检预约,在预约时需要选择预约的体检套餐。本章节我们需要通过饼形图直观的展示出会员预约的各个套餐占比情况。

前端代码
 <script type="text/javascript">
        // 基于准备好的dom,初始化echarts实例
        var myChart1 = echarts.init(document.getElementById('chart1'));

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

        axios.get("/report/getSetmealReport.do").then((res)=>{
            myChart1.setOption({
                                    title : {
                                        text: '套餐预约占比',
                                        subtext: '',
                                        x:'center'
                                    },
                                    tooltip : {//提示框组件
                                        trigger: 'item',//触发类型,在饼形图中为item
                                        formatter: "{a} <br/>{b} : {c} ({d}%)"//提示内容格式
                                    },
                                    legend: {
                                        orient: 'vertical',
                                        left: 'left',
                                        data: res.data.data.setmealNames
                                    },
                                    series : [
                                        {
                                            name: '套餐预约占比',
                                            type: 'pie',
                                            radius : '55%',
                                            center: ['50%', '60%'],
                                            data:res.data.data.setmealCount,
                                            itemStyle: {
                                                emphasis: {
                                                    shadowBlur: 10,
                                                    shadowOffsetX: 0,
                                                    shadowColor: 'rgba(0, 0, 0, 0.5)'
                                                }
                                            }
                                        }
                                    ]
                                });
        });
    </script>
    
        
 对应后台的json数据格式为:
{
    "data":{
        "setmealNames":["套餐1","套餐2","套餐3"], 
        "setmealCount":[{"name":"套餐1","value":10}, 
                     {"name":"套餐2","value":30}, 
                     {"name":"套餐3","value":25} ] 
    }, 
    "flag":true, 
    "message":"获取套餐统计数据成功" 
}
后台代码

controller

 //套餐预约占比饼形图
    @RequestMapping("/getSetmealReport")
    public Result getSetmealReport(){
        //使用模拟数据测试使用什么样的java对象转为饼形图所需的json数据格式
        Map<String,Object> data = new HashMap<>();
        try{
            List<Map<String,Object>> setmealCount = setmealService.findSetmealCount();
            data.put("setmealCount",setmealCount);

            List<String> setmealNames = new ArrayList<>();
            for (Map<String, Object> map : setmealCount) {
                String name = (String) map.get("name");//套餐名称
                setmealNames.add(name);
            }

            data.put("setmealNames",setmealNames);
            return new Result(true,MessageConstant.GET_SETMEAL_COUNT_REPORT_SUCCESS,data);
        }catch (Exception e){
            e.printStackTrace();
            return new Result(false,MessageConstant.GET_SETMEAL_COUNT_REPORT_FAIL);
        }
    }

接口方法

 List<Map<String, Object>> findSetmealCount();

接口方法实现

 @Override
    public List<Map<String, Object>> findSetmealCount() {
        return setmealMapper.findSetmealCount();
    }

Mapper的接口中添加方法

public List<Map<String,Object>> findSetmealCount();

Mapper.xml的sql内容

 <select id="findSetmealCount" resultType="map">
         select s.name,count(o.id) as value
         from t_order o ,t_setmeal s
         where o.setmeal_id = s.id group by s.name
 </select>

加方法**

public List<Map<String,Object>> findSetmealCount();

Mapper.xml的sql内容

 <select id="findSetmealCount" resultType="map">
         select s.name,count(o.id) as value
         from t_order o ,t_setmeal s
         where o.setmeal_id = s.id group by s.name
 </select>
ECharts 教程 通过以上步骤,你已经了解了 ECharts 的基本使用方法,包括环境搭建、基本使用步骤、常见图表类型、交互功能和个性化定制等。ECharts 提供了丰富的功能和灵活的配置选项,可以满足各种数据可视化需求。在实际应用中,你可以根据具体需求进一步深入学习和探索 ECharts 的更多功能。 阅读详情

相关推荐

百度echarts图表属性设置大全

好了,今天的分享就到这里,如果你对在面试中遇到的问题,或者刚毕业及工作几年迷茫不知道该如何准备面试并突破现状提升自己,对于自己的未来还不够了解不知道给如何规划,可以来看看同行们都是如何突破现状,怎么学习的,来吸收他们的面试以及工作经验完善自己的之后的面试计划及职业规划。《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取! olor: 各异,` 好了,今天的分享就到这里,如果你对在面

2401_84010884的博客 1381

百度图表 ECharts

ECharts的基本使用:完成一个简单的柱形图。 到ECharts的官网下载ECharts组件 将下载的ECharts组件加载到项目的HTML文档中 在HTML文档中设置一个盛放图表的容器:<div id=”tu”></div> //自行在CSS中为#tu设置CSS样式 在JS文件中为百度图表进行编程: (1)寻找DOM结构中盛放图表的容器:var tuNode=docu...

weixin_45343973的博客 1611

教你如何用百度Echarts做静态报表

Echarts,Enterprise Charts,商业级数据报表,缘起于百度公司自身的业务需要,是为了满足公司商林体系里各种业务系统的报表需求而产生的。其在百度自身前端团队的研发下,加之开源的特点,一经发布,迅速得到业界的高度认可和普遍好评,称为国内数据可视化领域的“后起之秀”。最近因为项目的需要,我们在项目中引入了Echarts用来显示界面图形报表。

不忘初心 4265

使用百度图表ECharts

来自ZJBLOG :使用百度图表ECharts 百度图表已经用过好几次了,但是今天准备把博客的访问情况可视化的时候发现,又得去官网看文档做。 有些还要找,所以记录一下,毕竟这玩意用的比较多。 ECharts官网 ECharts源码包下载 一共做了3个比较简单的图表(复杂的可以很复杂,还是得去官网看文档),效果图: 首先呢,从源码包中拷贝echarts.min.js到项目中...

sunon_的博客 1万+

(新手)关于echarts图形导出到excel

(新手)关于echarts图形导出到excel

潇潇土鳖的博客 1万+

python数据整理-百度开源的绘图工具echarts

echarts是一款基于HTML5的图形库,创建图表非常简单快捷,而且它是由百度团队的项目,一直在保持更新,目前最新的版本为4.0,这个库中的项目文档比较详细,而且图形非常丰富,方便切换,语言全中文也比较好理解。 图形全部为可交互式的,方便观察于分析。 例子 from pyecharts import Bar movieName = ["战狼2","速度","功夫瑜伽","西游伏妖篇","变形...

qq_37037438的博客 869

图形报表 ECharts

2.1 ECharts简介 ECharts缩写来自Enterprise Charts,商业级数据图表,是百度的一个开源的使用JavaScript实现的数据可视化工具,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖轻量级的矢量图形库 ZRender,提供直观、交互丰富、可高度个性化定制的数据可视化图表。 官网:https://echarts.baidu.com/ 下载地址:https://echarts.baidu

HuanTian1999的博客 689

基于Echarts的图形报表开发实战

在信息化高速发展的今天,数据已成为企业决策的重要依据。数据可视化通过图形化手段将复杂数据转化为直观图表,极大提升了信息的可读性与洞察效率。本章将从图形报表的基本概念入手,介绍柱状图、折线图、饼图等常见可视化形式,并结合实际业务场景说明其应用价值。我们将重点解析为何选择Echarts作为图形报表的核心工具——它不仅开源、功能强大,还具备良好的跨平台兼容性和丰富的交互特性。此外,还将概述从数据采集、清洗、处理到前端可视化呈现的完整流程,为后续章节的技术实现奠定理论基础。

weixin_42518874的博客 1036

Echarts图形报表设计(饼图)

在最近的工作中,我接触了echarts的饼状图设计,闲暇之余,对这段时间的收获做了一个总结,和大家分享一下。。 关于这个饼状图的设计,我主要实现的功能: 1、图形统计功能 2、图表点击跳转功能 3、根据天、月、季、年和日期进行查询统计 这里我主要将1、2和日期统计功能的代码展示如下: <body> <div> <input cla...

懒散的蜗牛 1233

ECharts统计报表模板设计与应用

统计报表模板是一种结构化的文档格式,用于收集、展示和分析数据。它能帮助个人和组织快速地生成标准化的报表,使得数据分析更加高效和一致。ECharts,一个由百度开源的数据可视化库,自2013年首次发布以来,就以丰富的图表类型、优雅的视觉效果和出色的性能受到开发者们的青睐。其设计初衷是为了解决商业报表中复杂数据的可视化需求,同时保持较低的学习成本和使用门槛。ECharts 之所以能够迅速崛起,与以下几个设计理念密切相关:轻量化。

weixin_29317963的博客 619

JavaScript实现的3D地图建模与ECharts3D应用

随着计算机图形学的发展与应用需求的提升,3D地图建模技术在GIS(地理信息系统)、城市规划、游戏开发等多个领域中变得愈发重要。本章将对3D地图建模技术的基础概念、方法和意义进行概述,帮助读者搭建起初步的认知框架。ECharts3D在实现基础3D图表的同时,还允许开发者对3D图形和场景进行高度自定义。这包括修改3D模型的材质、光照、阴影以及相机视角等,使得图表更加符合特定的展示需求。例如,你可以通过light选项来设置光照,以增强3D效果的立体感和真实感:...light: {

weixin_30248619的博客 1018

echarts图形导出到excel

一、情景:本人刚接触echarts不久,之前有一个小功能需要实现:将echarts生成的图形导出到excel中,百度了好久。由于本人是新手,所有百度上的获取图形的base64编码的有些方法是没有理解,同事有个大神写了一个js,各种方法获取编码,然后用使用虚拟表单提交,直接一脸懵逼,耽误好长时间才解决。后来为了完成任务,直接套用这个大神的方法,根本不理解。后来回头研究了一下,这里总结一下自己的实现过...

6841

ECharts与百度地图整合实践教程及关键组件

ECharts是一个使用JavaScript实现的开源可视化库,它为开发者提供了丰富的图表类型和灵活的数据处理方式。通过ECharts,开发者能够快速地创建各种图表,从基础的折线图、柱状图到更高级的地理信息可视化,ECharts都能胜任。这使得数据可视化变得更加高效和直观。百度地图是百度公司推出的一项网络地图服务,它基于Web 2.0的地图信息展示技术和广泛的数据采集,成为了中国市场上领先的网络地图服务之一。

weixin_30336531的博客 1212

php数据统计案例,PHP使用Echarts生成数据统计报表的案例

PHP使用Echarts生成数据统计报表的案例发布时间:2020-09-29 14:36:22来源:亿速云阅读:87作者:小新这篇文章将为大家详细讲解有关PHP使用Echarts生成数据统计报表的案例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。echarts统计,简单示例先看下效果图看下代码HTML页面 为ECharts准备一个Dom,宽高自定义js文件可以...

weixin_39987926的博客 395

Echarts实用数据可视化案例教程

ECharts起源于百度,现已成为Apache开源项目,具有以下特点:跨平台:可在多种设备和操作系统上运行。轻量级:代码体积小,加载速度快。高扩展性:支持丰富的自定义配置和主题。ECharts提供了多种类型的图表,以适应不同的数据可视化需求。常用的图表类型包括:折线图:非常适合展示数据随时间变化的趋势,常用于股票价格、温度记录等随时间变化的数据。柱状图:用于比较不同类别的数据大小,如年销售额、地区人口统计等。饼图。

weixin_42610010的博客 1099

Python实战:高效稳定采集微信视频号评论的API爬虫方案

网络爬虫是数据采集领域的核心技术,其原理是通过程序模拟浏览器行为,向目标服务器发送HTTP请求并解析响应数据,从而自动化获取网页或接口中的信息。这项技术的核心价值在于能够高效、批量化地收集公开数据,为市场分析、舆情监控和竞品研究提供数据基础。在社交媒体分析、电商价格监控等应用场景中,爬虫技术尤为重要。针对微信视频号这类动态加载的复杂应用,传统的GUI自动化工具(如影刀RPA)常面临性能瓶颈和风控挑战。本文聚焦于通过Python实现**无感采集**,直接与后端**API接口**交互,构建稳定高效的评论数据采集

weixin_30899023的博客 329

百度地图 - 在Echarts中使用地图api

简介 在地图可视化项目的开发中,为了进度领导是不会给你多余的时间完成一个功能。这时,就需要我们在社区中寻找框架,来实现这个功能。在许多符合条件的框架中,发现Echarts最符合产品的要求。 Echarts地图扩展插件 贡献者:沈毅 百度地图扩展,可以在百度地图上展现点图,线图,热力图等。 数据格式跟在 geo 坐标系上一样,每一项都是 [经度,纬度,数值大小,其它维度...] 配置方式非常简单,如下: option = { // 加载 bmap 组件 bmap: { //

小小的前端 3501

ELK - CentOS7 安装 elasticsearch 7.17.5

elk elasticsearch 安装

qq_19783793的博客 1462

百度地图 - 使用Echarts绘制飞线图

简介 为了更好的理解Echarts,把配置项看完是有必要的。但是看完了也不一定记得住,比如说我。一天看一些,当看完后觉得Echarts好强大。然后除了觉得Echarts强大外,其他的基本忘了。所以动手写一些DEMO也是很有必要的。下面来了解一下如何在地图上使用Echarts绘制飞线图。 引入 Api 通过<script>标签引入地图api地址、echarts地址、扩展插件地址,这里的ak是你在地图服务中心注册的。不了解ak的点击 这里 。不了解地图扩展插件的点击 这里 。 <!--

小小的前端 6794

TP4056锂电池充电电路设计原理与工程实践

锂离子电池充电管理是嵌入式电源系统的核心基础技术,其本质是通过恒流恒压(CC/CV)控制策略,匹配电池电化学特性以实现安全、高效、长寿命充放电。TP4056作为典型线性充电IC,以精简外围实现预充、恒流、恒压及自动截止全周期管理,但受限于线性拓扑的热耗散特性,必须协同散热设计、电阻精度选型与PCB布局进行系统级优化。该方案广泛应用于STM32智能小车、便携传感器节点等3.7V单节锂电供电场景,兼顾成本、可靠性与工程可实施性,是入门嵌入式硬件电源设计的关键实践范例。

weixin_36064575的博客 224

SAP-ABAP:SAP数据库视图(Database View)详解-创建

数据库视图是SAP中实现多表关联查询的基础工具,适合简单的跨表查询和权限控制场景。但其功能有限,对于复杂逻辑或高性能需求,建议结合CDS视图或ABAP程序开发。通过合理设计,数据库视图可显著提升开发效率和系统可维护性。它存储在数据库中,但本身不存储数据,仅通过查询动态生成结果。是一种基于物理数据库表的虚拟表,通过关联多个表(使用。

baidu_35680696的博客 1370

Echarts图表介绍

开发者可以自定义图表的外观,以满足特定的设计需求,从而保持一致的品牌标识。

wangxuanyang_zer的博客 2060

【知识分享】IBIS 建模指南 03

本文介绍了差分缓冲器的数据提取方法,重点分析了差分系统与单端系统的核心差异。文章详细阐述了差分接收机和驱动器的结构特点、工作原理及建模方法,指出全差分结构具有优异的电源噪声抑制能力。针对IBIS建模规范,作者提出了三维I-V曲面数据提取技术,并介绍了共模/差模电流分离、片上端接处理以及V-T表生成的解决方案。文章还探讨了差分电容(C_diff)的测量方法和数据简化策略,为复杂差分缓冲器的精确建模提供了系统化的技术路径。

一只豌豆象的博客 1282
上一篇: 如何利用poi技术操作Excel表格?
下一篇: Maven中Jar包、War包、和Pom工程有何区别?
皮卡丘不断更
博客等级 码龄5年 111粉丝 141原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

皮卡丘不断更

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

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

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

打赏作者

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

抵扣说明:

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

余额充值