当前位置:网站首页 > Vue.js开发 > 正文

vue3中,echarts使用(二)——柱状图之滚动条设置dataZoom、基准线-平均值markLine & calc() 函数-用于动态计算长度值

vue3中,echarts使用(二)——柱状图之滚动条设置dataZoom、基准线-平均值markLine & calc() 函数-用于动态计算长度值

效果-柱状图-基准值-滚动条

在这里插入图片描述

代码

index.vue

<template> <div class="content"> <div ref="echartsRef" class="attendance-data"></div> </div> </template> <script setup lang="ts" name="absenteeism"> import * as echarts from "echarts"; import { useEcharts } from "@/hooks/useEcharts"; import { ref, onMounted, nextTick } from "vue"; const dataNum = ref([930, 820, 780, 590, 410, 130, 220, 380, 510, 210, 430, 620, 180, 390, 210]); const echartsRef = ref<HTMLElement>(); // 数组的平均值 const avr = (arr: any) => { let sum = 0, avrVal = 0; for (let i = 0; i < arr.length; i++) { sum += arr[i]; } avrVal = sum / arr.length; return avrVal; }; const chartsView = () => { let myChart: echarts.ECharts = echarts.init(echartsRef.value as HTMLElement); let option: echarts.EChartsCoreOption = { // 标题组件,包含主标题和副标题 title: { text: "月度材料费统计", padding: 5, textStyle: { color: "#fff" }, left: 20, top: 10 }, // 提示框组件 鼠标经过 tip提示 tooltip: { trigger: "axis", backgroundColor: "rgba(0, 0, 0, 1)", borderColor: "rgba(0, 0, 0, 1)", padding: [16, 24], textStyle: { color: "#fff" }, formatter: (params: any) => { // console.log(params); // 打印数据 let ele: string = ``; ele += `<div style="font-size:16px;margin-bottom:5px;">${params[0].name}</div>`; for (let i = 0; i < params.length; i++) { ele += `<div style="display:flex;align-items: center;height:30px;font-size:12px;"><div style="width: 8px;height: 8px;background: ${params[i].color};border-radius: 50%;margin-right: 10px;"></div>耗电量<div style="font-size:20px;font-weight:bold;color:${params[i].color};margin:0 0px 0 10px;">${params[i].data}</div></div>`; } return ele; } }, // 上下左右及大小-设置图表占总面积的地方 grid: { x: 70, // 距离左侧 y: 60, // 距离上方 x2: 60, // 距离右侧 y2: 40 // 距离下方 }, // grid坐标系的x轴 xAxis: { type: "category", data: [ "1号风机", "2号风机", "3号风机", "4号风机", "5号风机", "12号风机", "21号风机", "32号风机", "45号风机", "52号风机", "121号风机", "212号风机", "322号风机", "415号风机", "152号风机" ], axisLine: { lineStyle: { type: "solid", color: "rgb(64, 94, 134)", width: "1" } }, axisTick: { show: false // 不显示坐标轴刻度线 } }, // grid坐标系的y轴 yAxis: { size: "16px", type: "value", axisLabel: { formatter(value: string | number | any) { if (value > 0) { return value; } return Math.abs(value); } }, splitLine: { //分割线配置 show: true, lineStyle: { color: "rgb(64, 94, 134)", width: 1 } } }, // 区域缩放 dataZoom: [ { // orient: "vertical", //水平显示 show: true, //显示滚动条 height: 1, bottom: 5, startValue: 0, //起始值 endValue: 5, //结束值 showDetail: false } ], // 系列列表。每个系列通过 type 决定自己的图表类型 series: [ { type: "bar", // data: [930, 820, 780, 590, 410], data: dataNum.value, //显示数值 itemStyle: { normal: { color: "#0075FF", barBorderRadius: [6, 6, 0, 0], // 圆角(左上、右上、右下、左下) label: { show: true, //开启显示数值 position: "top", //在上方显示 textStyle: { //数值样式 color: "#fff", //字体颜色 fontSize: 12, //字体大小 distance: 8 // 距离 // formatter: "{c} 平方米" // 这里是数据展示的时候显示的数据 } } } }, showBackground: true, backgroundStyle: { color: "rgba(180, 180, 180, 0.2)" }, //图表标线 markLine: { symbol: ["none", "none"], //去掉箭头 lineStyle: { normal: { type: "dashed", color: "#00FFBB" //基准线颜色 } }, data: [ { yAxis: avr(dataNum.value) } ], label: { show: true, position: "end", // 表现内容展示的位置 // position: "insideStartBottom", color: "#00FFBB", // 基准线文字颜色 normal: { formatter: "平均值" // 这儿设置安全基线 } } } } ] }; useEcharts(myChart, option); }; onMounted(() => { nextTick(() => { chartsView(); }); }); </script> <style scoped lang="scss"> .content { margin-bottom: 8px; background: rgb(0 0 0 / 30%); border-radius: 10px; padding-bottom: 10px; span { font-size: 16px; color: #ffffff; } } .attendance-data { height: calc(100% - 26px); } </style> 

src\hooks\useEcharts.ts

import { 
    onUnmounted } from "vue"; import * as echarts from "echarts"; / * @description 使用Echarts(只是为了添加图表响应式) * @param {Element} myChart Echarts实例(必传) * @param {Object} options 绘制Echarts的参数(必传) * @return void * */ export const useEcharts = (myChart: echarts.ECharts, options: echarts.EChartsCoreOption) => { 
    if (options && typeof options === "object") { 
    myChart.setOption(options); } const echartsResize = () => { 
    myChart && myChart.resize(); }; window.addEventListener("resize", echartsResize, false); onUnmounted(() => { 
    window.removeEventListener("resize", echartsResize); }); }; 
calc() 函数用于动态计算长度值
#div1 { 
    position: absolute; left: 50px; width: calc(100% - 100px); border: 1px solid black; background-color: yellow; padding: 5px; text-align: center; } 
  • 需要注意的是,运算符前后都需要保留一个空格,例如:width: calc(100% - 10px)
  • 任何长度值都可以使用calc()函数进行计算;
  • calc()函数支持 “+”, “-”, “*”, “/” 运算;
  • calc()函数使用标准的数学运算优先级规则;
到此这篇vue3中,echarts使用(二)——柱状图之滚动条设置dataZoom、基准线-平均值markLine & calc() 函数-用于动态计算长度值的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • vue3中,echarts使用(三)——柱状图之legend图例组件配置 & formatter自定义显示内容 & 封装title组件2024-11-30 10:27:04
  • vue3中,echarts使用(四)01——柱状图之堆叠条形图-官网示例2024-11-30 10:27:04
  • vue3中,echarts使用(四)02——柱状图之堆叠条形图-定制化 & 封装切换tag标签组件 & 封装title组件2024-11-30 10:27:04
  • vue3中,echarts在柱形图上加基准线,自定义tooltip2024-11-30 10:27:04
  • vue中,js封装方法之判断js对象类型 & 封装方法之js对象深拷贝2024-11-30 10:27:04
  • vue3中,echarts使用(一)——柱状图和折线图的结合使用2024-11-30 10:27:04
  • vue2中,开源vue关系图谱组件Relation-Graph的使用——relation-graph示例2024-11-30 10:27:04
  • vue3中,改造环形进度条Progress 组件——显示不同颜色2024-11-30 10:27:04
  • vue3中,封装表格组件——包括表格模块、关闭按钮和分页组件 & vue3传值父子用法 & ts中interface和type的用法2024-11-30 10:27:04
  • vue3中,封装tag标签列中,单击进行切换分类2024-11-30 10:27:04
  • 全屏图片