echarts实践总结(常用一):柱状图(特点:渐变色、点击缩放、左右滑动、悬浮展示样式)

news2025/1/12 2:51:57

目录

第一章 echarts基本使用

第二章 echarts实践——柱状图


  • 效果展示

第一章 echarts基本使用

Echarts常用配置项(详细入门)_echarts配置项手册-CSDN博客

第二章 echarts实践——柱状图

最近接到这么一个需求,需要画页面,然后有这么几个echarts的图需要画,平常我们通过教程都是绘画一些简单的柱状图,导致我们对ecahrts的一些api不适特别深入,小编也是,这里就给出一个小编实战中的例子,涵盖面相对广一点,实现的效果有:鼠标悬浮有另一个柱状图覆盖、可以缩放从而添加可视区域柱子的条数、左右滑动展示柱状图、渐变颜色以及一些基本的柱状图配置。

  • html部分
<div class="bar" style="width: 1000px;height: 500px;">
    <!-- 柱状图 -->
    <div id="handlerView" style="width: 100%;height: 100%;"></div>
</div>
  • js部分——详细说明在代码中
<script src="./base_js/echarts.min.js"></script>
<script>
    const handlerViewDom = document.getElementById('handlerView')
    let handlerChart = echarts.init(handlerViewDom)
    // x轴数据
    let xData = ['苏州', '无锡', '南通', '常州', '徐州', '扬州', '南京', '宿迁', '连云港', '盐城', '淮安', '镇江', '泰州']
    // y轴数据
    let yData = [28, 32, 12, 36, 35, 37, 29, 33, 21, 23, 34, 20, 27]
    // 最大值,用于设置背景柱体高度
    let maxData = []
    let temp = yData.sort((a, b) => {
        return a - b
    })
    yData.forEach(item => {
        maxData.push(temp[temp.length - 1])
    })
    let handlerOption = {
        xAxis: {
            type: 'category', // 类型
            data: xData, // x轴数据
            axisLine: { // x坐标轴轴样式展示
                show: true, // 是否显示坐标轴x轴线。
                onZero: true, // X 轴或者 Y 轴的轴线是否在另一个轴的 0 刻度上
                symbol: 'none', // 轴线两边的箭头。可以是字符串,表示两端使用同样的箭头;或者长度为 2 的字符串数组,分别表示两端的箭头。默认不显示箭头,即 'none'。两端都显示箭头可以设置为 'arrow',只在末端显示箭头可以设置为 ['none', 'arrow']
                lineStyle: { // x轴的样式,一个对象,属性有:{ color , width , type , dashOffset , cap , join , miterLimit , shadowBlur , shadowColor , shadowOffsetX , shadowOffsetY , opacity }
                    color: '#B6BABD'
                }
            },
            axisTick: { // 是否显示坐标轴刻度
                show: false
            }
        },
        yAxis: {
            name: '单位(时)', // 坐标轴名称
            axisLabel: { // 坐标轴刻度标签的相关设置
                color: '#999999', // 颜色
                fontSize: 14, // 字体
            },
            splitLine: { // 坐标轴在 grid 区域中的分隔线
                show: true, // 是否显示分隔线。
                lineStyle: { // 分隔线的样式——属性有:{ color , width , type , dashOffset , cap , join , miterLimit , shadowBlur , shadowColor , shadowOffsetX , shadowOffsetY , opacity }
                    color: '#D9DFE2', // 颜色
                    type: 'dashed', // 类别 'solid' 、 'dashed' 、 'dotted'
                },
            },
        },
        //图表与容器的位置关系
        grid: {
            left: '5%',   // 与容器左侧的距离
            right: '3%', // 与容器右侧的距离
            top: '19%',   // 与容器顶部的距离
            bottom: '15%', // 与容器底部的距离
        },
        tooltip: { // 提示框组件
            /*
                item: 数据项图形触发,主要在散点图,饼图等无类目轴的图表中使用。
                axis: 坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用。
                none: 什么都不触发
            */
            trigger: 'axis', // 触发类型
            showDelay: 0, // 延时展示时间
            axisPointer: { // 坐标轴指示器配置项 —— 具体可以自行尝试
                /*
                    line:直线指示器
                    shadow:阴影指示器
                    none:无指示器
                    cross:十字准星指示器
                */
                type: 'line', // 指示器类型
                lineStyle: { // 设置指示器样式
                    color: { // 设置渐变色
                        type: 'line',
                        x: 0,
                        y: 0,
                        x2: 1,
                        y2: 1,
                        colorStops: [{ // 0-1的渐变,可以自行尝试
                            offset: 0, color: 'rgba(82, 141, 251, 0.2)'
                        }, {
                            offset: 1, color: 'rgba(82, 141, 251, 0)'
                        }],
                    },
                    type: 'solid', // 设置实现
                    width: 40 // 线的宽度
                },
            }
        },
        dataZoom: [{  // 缩放
            show: false, // 是否展示
            type: 'slider', // 滑动条型数据区域缩放组件提供了数据缩略图显示
            startValue: 0, // 开始索引
            endValue: 6 // 结束索引
        }, {
            /*
                平移:在坐标系中滑动拖拽进行数据区域平移。
                缩放:
                    PC端:鼠标在坐标系范围内滚轮滚动(MAC触控板类同)
                    移动端:在移动端触屏上,支持两指滑动缩放。
            */
            type: 'inside'
        }],
        series: [
            {
                name: '平均统计时间', // 系列名称
                type: 'bar', // 类别
                barWidth: 16, // 柱条的宽度,不设时自适应
                label: {  // 图形上的文本标签,可用于说明图形的一些数据信息
                    show: true, // 是否显示标签。
                    position: 'top', // 显示位置
                    color: '#666666', // 颜色
                    zlevel: 4 // 用于分层使用
                },
                itemStyle: { // 图形样式
                    normal: { // 自定义渐变颜色
                        color: (params) => ({
                            type: 'linear',
                            x: 0,
                            y: 1,
                            x2: 0,
                            y2: 0,
                            colorStops: [
                                {
                                    offset: 0,
                                    color: '#5A93FC',
                                },
                                {
                                    offset: 1,
                                    color: '#97C5FF',
                                },
                            ]
                        })
                    }
                },
                data: yData, // data数据
            }
        ]
    };
    // 该函数为绑定了个点击事件
    const zoomSize = 7;
    handlerChart.on('click', function (params) {
        // 通过计算获取周围的值
        handlerChart.dispatchAction({
            type: 'dataZoom',
            startValue: xData[Math.max(params.dataIndex - zoomSize / 2, 0)],
            endValue:
                xData[Math.min(params.dataIndex + zoomSize / 2, yData.length - 1)]
        });
    });
    // 渲染echarts图标
    handlerOption && handlerChart.setOption(handlerOption)
    // 监听窗口发生变化,重新渲染页面
    handlerChart.resize()
    window.addEventListener('resize', () => {
        handlerChart.resize()
    })
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1524263.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

asp.net 作业星软件系统

asp.net 作业星软件系统 用户功能:分教师和家长&#xff08;学生) 注册登录:登录部分是用户名密码&#xff0c;以及教师和家长&#xff08;学生&#xff09;的勾选; 注册包括用户名密码确认密码再次确认密码(与上方输入的密码比对&#xff09;身份班级设置找回账号的问题和答案…

【计算机网络】什么是http?

​ 目录 前言 1. 什么是HTTP协议&#xff1f; 2. 为什么使用HTTP协议&#xff1f; 3. HTTP协议通信过程 4. 什么是url&#xff1f; 5. HTTP报文 5.1 请求报文 5.2 响应报文 6. HTTP请求方式 7. HTTP头部字段 8. HTTP状态码 9. 连接管理 长连接与短连接 管线化连接…

养鸡厂用这个开源监控方案,应该很棒

软件介绍 WVP-PRO是基于GB/T 28181-2016标准的流媒体平台&#xff0c;依托于优秀的开源流媒体服务 ZLMediaKit 提供全面且丰富的功能。该软件允许用户将 IPC 摄像头接入平台&#xff0c;支持28181、rtsp、rtmp、flv等协议&#xff0c;可实现视频流发送到其他平台&#xff0c;广…

记日志打印引起接口慢问题排查

其他系统调用本接口&#xff0c;其他系统反馈接口慢&#xff0c;查看接口用时0.07s&#xff0c;但仔细观察日志发现接口确实慢了用时5.978s&#xff1b; 日志写入NAS盘&#xff0c;非本地写入肯定会有一定的延时&#xff0c;看日志打印策略是同步滚动打印&#xff0c;改成异步打…

软件实例,餐厅酒水寄存管理系统软件,酒水寄存登记表软件操作教程

软件实例&#xff0c;餐厅酒水寄存管理系统软件&#xff0c;酒水寄存登记表软件操作教程 一、前言 以下软件操作以 佳易王酒水寄存管理系统软件V16.0为例说明 件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、酒水寄存管理系统软件可以管理多个品类的物…

[NOIP1998 提高组] 拼数

[NOIP1998 提高组] 拼数 题目描述 设有 n n n 个正整数 a 1 … a n a_1 \dots a_n a1​…an​&#xff0c;将它们联接成一排&#xff0c;相邻数字首尾相接&#xff0c;组成一个最大的整数。 输入格式 第一行有一个整数&#xff0c;表示数字个数 n n n。 第二行有 n n …

小白DB补全计划Day1-LeetCode:SQL基本操作select

前言&#xff1a;找工作&#xff08;主人&#xff09;的任务罢了 链接&#xff1a;1757. 可回收且低脂的产品 - 力扣&#xff08;LeetCode&#xff09; 584. 寻找用户推荐人 - 力扣&#xff08;LeetCode&#xff09; 来源&#xff1a;LeetCode 对DB篇的SQL章不太知道怎么写…

8.Python从入门到精通—Python 字符串,转义字符,字符串运算符

8.Python从入门到精通—Python 字符串,转义字符,字符串运算符 Python 字符串创建字符串访问字符串中的字符字符串切片字符串操作符字符串方法 Python 转义字符Python字符串运算符 Python 字符串 在 Python 中&#xff0c;字符串是一种基本数据类型&#xff0c;用于表示文本数据…

深度学习pytorch——Tensor维度变换(持续更新)

view()打平函数 需要注意的是打平之后的tensor是需要有物理意义的&#xff0c;根据需要进行打平&#xff0c;并且打平后总体的大小是不发生改变的。 并且一定要谨记打平会导致维度的丢失&#xff0c;造成数据污染&#xff0c;如果想要恢复到原来的数据形式&#xff0c;是需要…

【全面了解自然语言处理三大特征提取器】RNN(LSTM)、transformer(注意力机制)、CNN

目录 一 、RNN1.RNN单个cell的结构2.RNN工作原理3.RNN优缺点 二、LSTM1.LSTM单个cell的结构2. LSTM工作原理 三、transformer1 Encoder&#xff08;1&#xff09;position encoding&#xff08;2&#xff09;multi-head-attention&#xff08;3&#xff09;add&norm 残差链…

A Workload‑Adaptive Streaming Partitioner for Distributed Graph Stores(2021)

用于分布式图存储的工作负载自适应流分区器 对象&#xff1a;动态流式大图 划分方式&#xff1a;混合割 方法&#xff1a;增量重划分 考虑了图查询算法&#xff0c;基于动态工作负载 考虑了双动态&#xff1a;工作负载动态&#xff1b;图拓扑结构动态 缺点&#xff1a;分配新顶…

C语言基础之输入输出

前言 本次博客会是最有料的博客了,这其中的问题尤其是scanf函数对新手很不友好 我们本次 1会讲解其他的一些输入输出函数,分析他们的优劣点 2本次的参考资料来自于 c primer plus 1scanf函数详解 首先大家了解过scanf的功能吗 1大家已经学到这里了,肯定知道,scanf是从输…

Java Swing游戏开发学习11

内容来自RyiSnow视频讲解 这一节讲的是游戏状态GameState 游戏状态这里是&#xff0c;游戏所处的各种状态&#xff0c;比如游戏中、已暂停、与NPC对话中、与怪物Monster战斗中等等。在不同的状态中&#xff0c;游戏的交互也是不同的&#xff0c;比如按Enter键在游戏中状态&…

第三篇 - 概述- IAB受众和技术标准 - IAB视频广告标准《数字视频和有线电视广告格式指南》

第三篇 - 概述- IAB受众和技术标准​​​​​​​ - 我为什么要翻译介绍美国人工智能科技公司IAB技术标准系列&#xff08;2&#xff09; 本文目录 一、IAB技术实验室简介 二、概述及IAB受众 三、资源- IAB倡导的相关视频广告技术标准 四、案例分享-介绍一家数字化营销服务…

每日OJ题_简单多问题dp⑧_力扣188. 买卖股票的最佳时机 IV

目录 力扣188. 买卖股票的最佳时机 IV 状态机分析 解析代码 力扣188. 买卖股票的最佳时机 IV 188. 买卖股票的最佳时机 IV 难度 困难 给你一个整数数组 prices 和一个整数 k &#xff0c;其中 prices[i] 是某支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取…

基于springboot+mybatis调用MySQL存储过程

前言&#xff1a; 很多公司一般不使用JAVA写存储过程&#xff0c;因为写法较为复杂&#xff0c;不方便后期维护。 不排除一些公司项目会使用。 如果索引优化已经达到很好的性能&#xff0c;不建议使用。以下示例供学习参考&#xff1a; demo源码&#xff1a;https://gitee.com…

Mysql的行级锁

MySQL 中锁定粒度最小的一种锁&#xff0c;是 针对索引字段加的锁 &#xff0c;只针对当前操作的行记录进行加锁。 行级锁能大大减少数据库操作的冲突。其加锁粒度最小&#xff0c;并发度高&#xff0c;但加锁的开销也最大&#xff0c;加锁慢&#xff0c;会出现死锁。行级锁和存…

idea 的基本配置

一、安装目录介绍 其中&#xff1a;bin 目录下&#xff1a; 二、配置信息目录结构 这是 IDEA 的各种配置的保存目录。这个设置目录有一个特性&#xff0c;就是你删除掉整个目录之后&#xff0c;重新启动 IntelliJ IDEA 会再自动帮你生成一个全新的默认配置&#xff0c;所以很多…

还看YOLOv8,YOLOv9呢,烂怂卷积有啥好看的?教你利用多模态大模型做目标检测!

文章大纲 大模型业态与idea 来源可行性探索现有成果国内多模态APP 探索利用现有平台进行快速开发 MVP参考文献大模型业态与idea 来源 有一次我在单位汇报的时候,大领导问:深度学习先在还这么落后嘛?每次解决一个问题还要重新训练一个模型࿱

zabbix配置

1 下载zabbix 1 配置yum源 rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release- 5.0-1.el7.noarch.rpm yum clean all yum makecache fast 完成后会出现zabbix.repo文件 2安装zabbix服务 yum -y install zabbix-server-mysql zabbix-web-mysql z…