echart 柱状图-bar

业务场景一

效果

业务组件调用代码

<template>        
<barCom 
:domId="1" 
:title="barComProps.title" 
:xAxisData="barComProps.xAxisData"
:yAxisProps="barComProps.yAxisProps" 
:seriseData="barComProps.seriseData"
:emphasisItemStyle="barComProps.emphasisItemStyle" 
:itemStyle="barComProps.itemStyle"
:stackFlag="barComProps.stackFlag"
:stackLabel="barComProps.stackLabel" 
:borderRadius="barComProps.borderRadius"
:formatCallBack="barComProps.formatCallBack">
</barCom>
</template>

<script lang="ts" setup>
import barCom from "../../components/echartsCom/barCom.vue"

const barComProps = reactive({
  title: "柱状图",
  xAxisData: ['点', '击', '柱', '子', '或', '者', '两', '指', '在'],
  yAxisProps: {
    type: "value",
    splitLine: {//是否显示 y轴横线
      show: false
    },
    show: false
  },
  seriseData: [220, 182, 191, 234, 290, 330, 310, 120, 362],//数据
  itemStyle: [//柱状图的默认颜色 渐变
    { offset: 0, color: '#f00' },
    { offset: 0.5, color: '#188df0' },
    { offset: 1, color: '#188df0' }
  ],
  emphasisItemStyle: [//柱状图的高亮颜色 渐变
    { offset: 0, color: '#f00' },
    { offset: 0.7, color: '#2378f7' },
    { offset: 1, color: '#83bff6' }
  ],
  stackFlag: true,//柱状图是否显示每个柱条的数量
  stackLabel: {
    show: true,
    position: 'top',
    color: "#f00"
  },
  borderRadius: 0,
  formatCallBack: (params: any) => {
    if (!params || params.length == 0 || !Array.isArray(params)) return
    let fromatStr = ""
    params.forEach((ele: any) => {
      fromatStr += '<div style="border-bottom:1px solid #ccc;"><span style="display:inline-block;margin-right:5px;border-radius:10px;width:9px;height:9px;background-color:' + ele.color + '"></span>' + ele.data + "</div>"
    })
    return fromatStr
  }
})



</script>

业务场景二

效果

业务组件调用代码

<template>
<barCom
  :domId="2" 
  :title="barComPropsSimple.title" 
:xAxisData="barComPropsSimple.xAxisData"
 :yAxisProps="barComPropsSimple.yAxisProps" 
:seriseData="barComPropsSimple.seriseData"
 :emphasisItemStyle="barComPropsSimple.emphasisItemStyle" :itemStyle="barComPropsSimple.itemStyle"
:stackFlag="barComPropsSimple.stackFlag" 
:stackLabel="barComPropsSimple.stackLabel"
:borderRadius="barComPropsSimple.borderRadius" :formatCallBack="barComPropsSimple.formatCallBack">
</barCom>
</template>
<script lang="ts" setup>
import barCom from "../../components/echartsCom/barCom.vue"
const barComPropsSimple = reactive({
  title: "柱状图",
  xAxisData: ['点', '击', '柱', '子', '或', '者', '两', '指', '在'],
  yAxisProps: {
    type: "value",
    splitLine: {//是否显示 y轴横线
      show: true
    },
    show: true
  },
  seriseData: [220, 182, 191, 234, 290, 330, 310, 120, 362],//数据
  itemStyle: "#188df0",
  emphasisItemStyle: '#f00',
  // emphasisItemStyle: [//柱状图的高亮颜色 渐变
  //   { offset: 0, color: '#f00' },
  //   { offset: 0.7, color: '#2378f7' },
  //   { offset: 1, color: '#83bff6' }
  // ],
  stackFlag: false,//柱状图是否显示每个柱条的数量
  stackLabel: {
    show: false,
  },
  borderRadius: 10,
  formatCallBack: (params: any) => {
    if (!params || params.length == 0 || !Array.isArray(params)) return
    let fromatStr = ""
    params.forEach((ele: any) => {
      fromatStr += '<div style="border-bottom:1px solid #ccc;"><span style="display:inline-block;margin-right:5px;border-radius:10px;width:9px;height:9px;background-color:' + ele.color + '"></span>' + ele.data + "</div>"
    })
    return fromatStr
  }
})

</script>

业务场景三

效果

业务组件调用代码

<template>
<barCom :domId="3" :title="barComPropsHorizontal.title" :xAxisProps="barComPropsHorizontal.xAxisProps"
          :xAxisData="barComPropsHorizontal.xAxisData" :yAxisData="barComPropsHorizontal.yAxisData"
          :yAxisProps="barComPropsHorizontal.yAxisProps" :seriseData="barComPropsHorizontal.seriseData"
          :emphasisItemStyle="barComPropsHorizontal.emphasisItemStyle" :itemStyle="barComPropsHorizontal.itemStyle"
          :stackFlag="barComPropsHorizontal.stackFlag" :stackLabel="barComPropsHorizontal.stackLabel"
          :borderRadius="barComPropsHorizontal.borderRadius" :formatCallBack="barComPropsHorizontal.formatCallBack">
        </barCom>
</template>
<script lang="ts" setup>
import barCom from "../../components/echartsCom/barCom.vue"
const barComPropsHorizontal = reactive({
  title: "柱状图-横向",
  xAxisProps: {
    type: "value",
    boundaryGap: [0, 0.01]
  },
  xAxisData: [],
  yAxisProps: {
    type: "category",
    // boundaryGap: false,
  },
  yAxisData: ['点', '击', '柱', '子', '或', '者', '两', '指', '在'],
  seriseData: [220, 182, 191, 234, 290, 330, 310, 120, 362],//数据
  itemStyle: [//柱状图的默认颜色 渐变
    { offset: 0, color: '#f00' },
    { offset: 0.5, color: '#188df0' },
    { offset: 1, color: '#188df0' }
  ],
  emphasisItemStyle: [//柱状图的高亮颜色 渐变
    { offset: 0, color: '#f00' },
    { offset: 0.7, color: '#2378f7' },
    { offset: 1, color: '#83bff6' }
  ],
  stackFlag: false,//柱状图是否显示每个柱条的数量
  stackLabel: {
    show: false,
  },
  borderRadius: 10,
  formatCallBack: (params: any) => {
    if (!params || params.length == 0 || !Array.isArray(params)) return
    let fromatStr = ""
    params.forEach((ele: any) => {
      fromatStr += '<div style="border-bottom:1px solid #ccc;"><span style="display:inline-block;margin-right:5px;border-radius:10px;width:9px;height:9px;background-color:' + ele.color + '"></span>' + ele.data + "</div>"
    })
    return fromatStr
  }
})


</script>

基础组件

<template>
    <div style="width: 100%; height: 100%" :id="'BarEchartDom' + propsVal.domId"></div>
</template>
  
<script setup lang='ts'>
import * as echarts from "echarts";
let myChart: any = null
const propsVal = defineProps({
    domId: {//加个唯一标识 必须是唯一的
        type: Number,
        default: Math.random()
    },
    title: {
        type: String,
        default: '柱状图'
    },
    legendDataList: {//图例组件的数据
        type: Array,
        default: []
    },
    legendProps: {//图例组件的基本配置
        type: Object,
        default: {
            right: 30,
            top: 30,
            itemHeight: 10,
            itemGap: 10,
            icon: "circle",//可选 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow', 'none'
            textStyle: {//文字颜色
                color: "#333333"
            }
        }
    },
    grid: {//网格的配置
        type: Object,
        default: {
            top: "15%",//组件距离容器 上侧 的距离
            left: "3%",//组件距离容器 左侧 的距离
            right: "4%",//组件距离容器 右侧 的距离
            bottom: "3%",//组件距离容器 下侧 的距离
            containLabel: true,//组件距离容器 上侧 的距离
        }
    },
    FeatureList: {//工具配置项显示 
        type: Array,
        default: []//['saveAsImage','restore','dataView',"dataZoom",'magicType','brush']
    },
    seriseData: {
        type: Array,
        default: []
    },
    xAxisData: {//x 坐标轴数据 
        type: Array,
        default: []
        //'value' 数值轴,适用于连续数据
        // 'category'
        // time 时间轴,适用于连续的时序数据,与数值轴相比时间轴带有时间的格式化,在刻度计算上也有所不同,例如会根据跨度的范围来决定使用月,星期,日还是小时范围的刻度
        // 'log' 对数轴。适用于对数数据。
    },
    xAxisProps: {//x 坐标轴配置
        type: Object,
        defualt: {
            type: "category",
            boundaryGap: false,
        }
    },
    yAxisProps: {//y 坐标轴配置
        type: Object,
        default: {
            type: "value",
        }
    },
    yAxisData: {//x 坐标轴数据 
        type: Array,
        default: []
        //'value' 数值轴,适用于连续数据
        // 'category'
        // time 时间轴,适用于连续的时序数据,与数值轴相比时间轴带有时间的格式化,在刻度计算上也有所不同,例如会根据跨度的范围来决定使用月,星期,日还是小时范围的刻度
        // 'log' 对数轴。适用于对数数据。
    },
    itemStyle: {//柱状图的默认颜色 渐变
        type: Object,
        default: {

        }
    },
    emphasisItemStyle: {//柱状图的高亮颜色 渐变
        type: Object,
        default: {

        }
    },
    stackFlag: {//是否显示柱状图的 柱条顶部数据
        type: Boolean,
        default: false
    },
    stackLabel: {// 柱条顶部数据 样式
        type: Object,
        default: {

        }
    },
    borderRadius: {//显示圆角
        type: Number,
        default: 0
    },
    formatCallBack: {//提示数据格式化
        type: Function,
        default: () => { }
    }
})
onMounted(() => {
    const BarEchartDomEl = document.getElementById("BarEchartDom" + propsVal.domId);
    myChart = echarts.init(BarEchartDomEl);
    console.log("mychart-bar-003", option)
    myChart.setOption(option);

})
const handleSeriesData = () => {

    let seriesData = []

    let resultItemColor = Array.isArray(propsVal.itemStyle) ? new echarts.graphic.LinearGradient(0, 0, 1, 1, propsVal.itemStyle) : propsVal.itemStyle
    let resultEmphasisColor = Array.isArray(propsVal.emphasisItemStyle) ? new echarts.graphic.LinearGradient(0, 0, 1, 1, propsVal.emphasisItemStyle) : propsVal.emphasisItemStyle
    // LinearGradient(0, 0, 1, 1, 控制渐变方向
    const item: any = {
        type: 'bar',
        showBackground: false,
        stack: 'Total',
        // label: {
        //     show: true,
        //     position: 'top'
        // },
        itemStyle: {
            borderRadius: propsVal.borderRadius,
            color: resultItemColor
        },
        emphasis: {
            itemStyle: {
                color: resultEmphasisColor
            }
        },

        data: propsVal.seriseData
    }
    item.label = propsVal.stackLabel
    seriesData.push(item)
    return seriesData
}
const option = {
    tooltip: {
        trigger: "axis",
    },
    title: {
        text: propsVal.title,
    },
    xAxis: {
        data: propsVal.xAxisData,
        ...propsVal.xAxisProps
    },
    yAxis: {
        ...propsVal.yAxisProps,
        data: propsVal.yAxisData
    },
    series: handleSeriesData(),
    formatter: function (params: any) {
        console.log("parmas", params)
        return propsVal.formatCallBack(params)
    }
};
</script>
  
<style></style>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在数据库中进行表内容的修改(MYSQL)

根据表中内容&#xff0c;用命令语句创建数据库&#xff0c;表格&#xff0c;以及插入&#xff0c;修改&#xff0c;删除表格中的内容。 创建数据库&#xff1a;zrzy mysql> create database zrzy; 引用zrzy数据库&#xff1a; mysql> use zrzy; 创建student_info表&…

【EasyExcel实践】导出多个sheet到多个excel文件,并压缩到一个zip文件

文章目录 前言正文一、项目依赖二、封装表格实体和Sheet实体2.1 表格实体2.2 Sheet实体 三、核心实现3.1 核心实现之导出为输出流3.2 web导出3.3 导出为字节数组 四、调试4.1 构建调试用的实体类4.2 控制器调用4.3 测试结果 五、注册大数转换器&#xff0c;长度大于15时&#x…

XML Schema中的attributeFormDefault

XML Schema中的attributeFormDefault属性&#xff0c;用以指定元素的属性默认是否必须带有命名空间前缀。 attributeFormDefault属性可以取值qualified或unqualified&#xff0c;默认值是unqualified。 当取值为qualified时&#xff0c;表示属性必须用命名空间作为前缀&#x…

线性可分SVM摘记

线性可分SVM摘记 0. 线性可分1. 训练样本到分类面的距离2. 函数间隔和几何间隔、(硬)间隔最大化3. 支持向量 \qquad 线性可分的支持向量机是一种二分类模型&#xff0c;支持向量机通过核技巧可以成为非线性分类器。本文主要分析了线性可分的支持向量机模型&#xff0c;主要取自…

命令模式 rust和java实现

文章目录 命令模式介绍javarustrust仓库 命令模式 命令模式&#xff08;Command Pattern&#xff09;是一种数据驱动的设计模式。请求以命令的形式包裹在对象中&#xff0c;并传给调用对象。调用对象寻找可以处理该命令的合适的对象&#xff0c;并把该命令传给相应的对象&…

梦极光(ez_re?)

ez_re 先查壳看看&#xff0c;没有壳 32位 我先说说这道题 打开分析找到主函数 在这里就是flag了&#xff0c;用十六进制转ascii码 我们先运行这个程序看看 我想说说我的想法 首先没看出来这里是十六进制转ascii码其次41D538数组用来干啥来的&#xff1f;题目里面给出的请…

untiy 配置iis服务器来打开webgl

最简单的方法是不需要配置服务器&#xff0c;打包的时候直接build and run&#xff0c;但是有时候如果我们需要调整js的内容&#xff0c;会很不方便&#xff0c;所以配置一个iis服务器还是很有必要的 首先要开启iis服务 控制面板&#xff0c;查看方式选类型&#xff0c;点击程…

android viewpager 禁止滑动

android viewpager 禁止滑动 前言一、viewpager 禁止滑动是什么&#xff0c;有现成方法吗&#xff1f;二、使用setOnTouchListener三、使用自定义viewpager总结 前言 本文介绍了本人有一个相关的需求需要实现这一功能&#xff0c;在过程中发现自己之前没做过&#xff0c;然后记…

用C++和python混合编写数据采集程序?

之前看过一篇文章&#xff0c;主要阐述的就是多种语言混合编写爬虫程序&#xff0c;结合各种语言自身优势写一个爬虫代码是否行得通&#xff1f;觉得挺有意思的&#xff0c;带着这样的问题&#xff0c;我尝试着利用我毕生所学写了一段C和python混合爬虫程序&#xff0c;目前运行…

基于Spring Boot的疫苗接种系统-计算机毕设 附源码 32315

基于Spring Boot的疫苗接种系统 摘 要 预防预接种工作实行网络信息化管理&#xff0c;是我国免疫规划工作发展的需要。接种信息实行网络信息化不仅是预防接种工作步入了一个新的台阶&#xff0c;更重要的是解决了多年疫苗接种过程种&#xff0c;免疫接种剂次不清&#xff0c;难…

2023-简单点-yolox-pytorch代码解析(一)-nets/darknet.py

yolox-pytorch: nets/darknet.py yolox网络结构yolox-pytorch目录今天解析注释net/darknet.pyFocusBaseConvDWConvSPPBottleneckDarknet未完待续。。。 yolox网络结构 yolox-pytorch目录 今天解析注释net/darknet.py #!/usr/bin/env python3 # 指定使用python3来执行此脚本 …

电子签名软件,在教育行业中如何应用?

电子签名软件简化签署流程&#xff0c;降低签署门槛&#xff0c;让更多人便捷地参与到签署中来。 微签作为国内电子签名软件的拓荒者之一&#xff0c;拥有19年的研发应用经验&#xff0c;提供专业的企业电子签名服务。微签的电子签名软件广泛应用于审批场景&#xff0c;实现高…

win系列:电脑设置关闭屏幕和休眠时间不起作用解决方案

电脑设置关闭屏幕和休眠时间不起作用解决方案 一. 笔记本电脑30s自动锁屏&#xff0c;怎么设置都没用?方法一&#xff1a;使用快捷键方法二&#xff1a;开始菜单设置如果需要对锁屏进行背景等的设置&#xff0c;建议你采用这个方法来进行。方法三&#xff1a;控制面板设置怎么…

从0开始学习JavaScript--JavaScript 箭头函数

JavaScript的现代语法&#xff0c;箭头函数&#xff08;Arrow Functions&#xff09;是一个不可忽视的重要部分。它们不仅提供了更简洁的语法&#xff0c;还改变了函数的作用域规则。在这篇文章中&#xff0c;将深入研究JavaScript箭头函数的概念、语法、用法以及它们与传统函数…

使用Git客户端向gitee免密推送项目代码(保姆级流程哦)

1.进入Git官网手动下载git的客户端可执行程序 一路next即可 2.找到安装路径下的3.进入git-bash 根据如下的代码一次执行只需要修改对应的username和自己再gitee中绑定的邮箱 4.分发私钥到邮箱 产生私钥的时候回车三次即可&#xff1b;查看私钥如下图及正常&#xff1b; 5.进…

C++设计模式——工厂模式 :简单工厂、工厂方法、抽象工厂

工厂模式可以分为三种&#xff0c;简单工厂模式&#xff0c;工厂方法模式和抽象工厂模式。 那么&#xff0c;这三种工厂模式长啥样&#xff0c;又为啥会衍生出这三种模式来呢&#xff1f;本篇和大家一起来学习总结一下。 一、简单工厂模式 简单工厂SimpleFactory 负责创建所有…

Zabbix 6 详细安装部署教程

目录 一、安装 MySQL 数据库 二、安装 zabbix 监控平台 三、编辑配置文件 四、启动服务 五、zabbix-web 安装 zabbix web 出图展示乱码问题解决方案 zabbix 的安装部署非常简单&#xff0c;官方提供了四种安装途径&#xff0c;分别是二进制 rpm 包安装方式、源码安装方…

使用 DMA 在 FPGA 中的 HDL 和嵌入式 C 之间传输数据

使用 DMA 在 FPGA 中的 HDL 和嵌入式 C 之间传输数据 该项目介绍了如何在 PL 中的 HDL 与 FPGA 中的处理器上运行的嵌入式 C 之间传输数据的基本结构。 介绍 鉴于机器学习和人工智能等应用的 FPGA 设计中硬件加速的兴起&#xff0c;现在是剥开几层“云雾”并讨论 HDL 之间来回传…

微信小程序仿网易严选(附精选源码32套,涵盖商城团购等)

商城主要实现的功能 首页、专题、分类、购物车、我的小程序授权登陆获取用户信息首页包含品牌制造页、品牌制造详情页面、新品首发页面、人气推荐页面、各分类列表商品详情页面&#xff0c;包含常见问题、大家都在看商品列表、加入购物车、收藏商品、立即购买、下订单、选择收…

在表格中显示字典的内容(根据后端返回的数据)vue3

进入页面&#xff0c;调接口&#xff0c;后端返回数据&#xff0c;indexType为0或者1&#xff0c;要用这个数据显示字典的内容 用插槽拿到数据 写一个函数&#xff0c;在模板中使用 const { proxy } getCurrentInstance(); // 字典-指标类型 const { index_type } proxy.u…