当前位置: 首页 > news >正文

一些ECharts配置

基于vue3,EChart5.4.3版本

Line

<script setup lang="ts">
import {onBeforeUnmount, onMounted, ref, watch} from "vue"
import {useEcharts, type ECOption} from "@/composables"
import * as echarts from "echarts/core";const chartOptions = ref<ECOption>();
const {domRef: chart} = useEcharts(chartOptions);const props = defineProps({chartXData: {type: Array,default: []},chartYData: {type: Array,default: []},seriesData: {type: Array,default: []},seriesNameList: {type: Array,default: []},yName: {type: String,default: ''},lineColorList: {type: Array,default: ['rgba(1, 145, 219, 1)', 'rgba(9, 162, 51, 1)', 'rgba(191, 153, 18, 1)']},isAreaStyle: {type: Boolean,default: false},areaColorStyle: {type: Array,default: [new echarts.graphic.LinearGradient(0, 0, 0, 1, [{offset: 0,color: 'rgba(3, 200, 242, 0.64)',},{offset: 1,color: 'rgba(3, 200, 242, 0)',},]), new echarts.graphic.LinearGradient(0, 0, 0, 1, [{offset: 0,color: 'rgba(4, 148, 44, 0.16)',},{offset: 1,color: 'rgba(4, 148, 44, 0)',},]), new echarts.graphic.LinearGradient(0, 0, 0, 1, [{offset: 0,color: '#BF9912AB',},{offset: 1,color: '#BF991200',},])]},stack: {type: String,default: ''},isSmooth: {type: Boolean,default: false},symbol: {type: String,default: ''},title: {type: String,default: ''},topGrid: {type: String,default: '25'},
})const watcher = watch(()=> props.seriesData, (value: any) => {chartOptions.value.series = getSeriesData(value)
})const watcherTitle = watch(()=> props.title, (value: any) => {chartOptions.value.title['text'] = value
})const watcherXData = watch(()=> props.chartXData, (value: any) => {chartOptions.value.xAxis.data = value
})onBeforeUnmount(() => {watcher();watcherTitle();watcherXData();
})const getChartData = () => {updateChartOptions();
}const updateChartOptions = () => {chartOptions.value = {title: {text: props.title,left: 0,top: 5,textStyle: {fontSize: 16,},},backgroundColor: 'white',tooltip: {trigger: 'axis',color: '#fff', // 设置文字颜色为白色backgroundColor: 'rgba(16,24,41)', // 设置背景颜色为黑色,透明度为0.7borderColor: 'rgba(16,24,41)', // 设置边框颜色为白色borderWidth: 1, // 设置边框宽度为1px},legend: {left: 'right',top: 10,itemWidth: 8,itemHeight: 8,itemGap: 16,borderRadius: 4,color: 'rgba(202,231,254,0.5)',fontSize: 10,},xAxis: {type: 'category',data: props.chartXData,boundaryGap: false,axisLine: {show: false,},axisTick: {show: false,},axisLabel: {interval: 1,show: true,color: 'rgba(202,231,254,0.5)', //X轴文字颜色},},yAxis: [{type: 'value',nameTextStyle: {color: '#CAE7FE80',// fontFamily: 'Alibaba PuHuiTi',fontSize: 10,fontWeight: 600,// padding: [0, 0, 0, 40], // 四个数字分别为上右下左与原位置距离},nameGap: 10, // 表现为上下位置axisLine: {show: false,},axisTick: {show: false,},axisLabel: {color: 'rgba(202,231,254,0.5)',fontSize: 10,// interval: 2, // 设置为0表示每隔一个显示一个标签},splitLine: {show: true,lineStyle: {color: 'rgba(147,219,209,0.16)',},},},{type: 'value',// name: '金额:万元',nameTextStyle: {color: 'rgba(202,231,254,0.5)',fontFamily: 'Alibaba PuHuiTi',fontSize: 10,fontWeight: 600,// padding: [0, 0, 0, 40], // 四个数字分别为上右下左与原位置距离},position: 'right',splitLine: {show: false,},axisTick: {show: false,},axisLine: {show: false,},axisLabel: {show: true,formatter: '{value}', //右侧Y轴文字显示textStyle: {color: 'rgba(202,231,254,0.5)',},},},],series: getSeriesData(props.seriesData),grid:{ // 让图表占满容器top:"50px",left:"20px",right:"50px",bottom:"0px",containLabel: true,}};
}const getSeriesData = (seriesData: any) => {const length = props.seriesNameList?.lengthlet seriesArray = []for (let i = 0; i < length; i++) {seriesArray.push({name: props.seriesNameList?.[i],type: 'line',showAllSymbol: true, //显示所有图形。// stack: props.stack,//stack1smooth: props.isSmooth,areaStyle: {// 设置堆叠效果的颜色和透明度color: props.areaColorStyle?.[i],},symbol: props.symbol, //标记的图形为实心圆 rectsymbolSize: 4, //标记的大小lineStyle: {color: props.lineColorList?.[i],},itemStyle: {color: props.lineColorList?.[i]},data: seriesData?.[i],})}return seriesArray}onMounted(() => {getChartData();
})</script><template><div class="wh-full" ref="chart"></div>
</template><style scoped></style>

Bar

<script setup lang="ts">
import {onMounted, ref,onBeforeUnmount,watch} from "vue"
import {useEcharts, type ECOption} from "@/composables"
import * as echarts from "echarts/core";const chartOptions = ref<ECOption>();
const {domRef: chart} = useEcharts(chartOptions);const props = defineProps({chartXData: {type: Array,default: []},chartYData: {type: Array,default: []},seriesData: {type: Array,default: []},seriesNameList: {type: Array,default: []},yName: {type: String,default: ''},barWidth: {type: String,default: '16'},title: {type: String,default: ''},topGrid: {type: String,default: '40px'},lineColorList: {type: Array,default: ['rgba(1, 145, 219, 1)', 'rgba(191, 153, 18, 1)', 'rgba(9, 162, 51, 1)']},areaColorStyle: {type: Array,default: [new echarts.graphic.LinearGradient(0, 0, 1, 1, [{offset: 0,color: '#3A65F7FF',},{offset: 1,color: '#20C2F0FF',},]), new echarts.graphic.LinearGradient(0, 0, 0, 1, [{offset: 0,color: '#BF9912AB',},{offset: 1,color: '#BF991200',},]), new echarts.graphic.LinearGradient(0, 0, 0, 1, [{offset: 0,color: '#03C8F200',},{offset: 1,color: 'rgba(4, 148, 44, 0)',},])]},
})const watcher = watch(()=> props.seriesData, (value: any) => {chartOptions.value.series[0].data = value
})const watcherXData = watch(()=> props.chartXData, (value: any) => {chartOptions.value.yAxis[0].data = value
})onBeforeUnmount(() => {watcher();watcherXData();
})const getChartData = () => {updateChartOptions();
}const updateChartOptions = () => {chartOptions.value = {backgroundColor: '#FFFFFF',title: {text: props.title,left: 16,top: 10,textStyle: {fontSize: 16,}},tooltip: {trigger: 'axis',axisPointer: {// 坐标轴指示器,坐标轴触发有效type: 'shadow', // 默认为直线,可选为:'line' | 'shadow'},confine: true,textStyle: {color: '#fff', // 设置文字颜色为白色},backgroundColor: 'rgba(16,24,41)', // 设置背景颜色为黑色,透明度为0.7borderColor: 'rgba(16,24,41)', // 设置边框颜色为白色borderWidth: 1, // 设置边框宽度为1px},legend: {left: 'right',top: 20,textStyle: {color: '#FFFFFFE6',fontSize: 14,},itemWidth: 10,itemHeight: 10,itemGap: 15,},xAxis: {type: 'value',axisLine: {show: true,lineStyle: {color: '#FFFFFF4D',},},axisTick: {show: false,},},yAxis: [{type: 'category',data: props.chartXData,nameTextStyle: {color: '#FFFFFF4D',fontFamily: 'Alibaba PuHuiTi',fontSize: 14,fontWeight: 600,// padding: [0, 0, 0, 40], // 四个数字分别为上右下左与原位置距离},nameGap: 10, // 表现为上下位置axisLine: {show: true,lineStyle: {color: '#FFFFFF4D',},},axisTick: {show: false,},axisLabel: {color: '#FFFFFFE6',fontSize: 14,},splitLine: {show: false,lineStyle: {color: 'rgba(147,219,209,0.16)',},},},],series: [{type: 'bar',data: props.seriesData,barWidth: `${props.barWidth}rem`,itemStyle: {// 设置堆叠效果的颜色和透明度color: props.areaColorStyle?.[0],},lineStyle: {color: props.lineColorList?.[0],},showBackground: true,backgroundStyle: {color: '#20C2F01A'}},],grid: { // 让图表占满容器top: `${props.topGrid}px`,left: "16px",right: "30px",bottom: "24px",containLabel: true,}};
}const getSeriesData = () => {const length = props.seriesNameList?.lengthlet seriesArray = []for (let i = 0; i < length; i++) {seriesArray.push({name: props.seriesNameList?.[i],type: 'bar',barWidth: `${props.barWidth}rem`,itemStyle: {// 设置堆叠效果的颜色和透明度color: props.areaColorStyle?.[i],},lineStyle: {color: props.lineColorList?.[i],},data: props.seriesData?.[i],//props.seriesData?.[i]})}return seriesArray
}onMounted(() => {getChartData();
})</script><template><div class="wh-full" ref="chart"></div>
</template><style scoped></style>

Pie

<script setup lang="ts">
import {onMounted, ref,onBeforeUnmount,watch} from "vue"
import {useEcharts, type ECOption} from "@/composables"
import * as echarts from "echarts/core";const chartOptions = ref<ECOption>();
const {domRef: chart} = useEcharts(chartOptions);const props = defineProps({percentData: {type: Number,default: 0},
})const watcher = watch(()=> props.percentData, (value: any) => {chartOptions.value.series[1].data[1].value = valuechartOptions.value.series[1].data[0].value = 100 - value
})onBeforeUnmount(() => {watcher();
})const getChartData = () => {updateChartOptions();
}const updateChartOptions = () => {chartOptions.value = {tooltip: {show: 'false',},series: [{type: 'pie',radius: ['65%', '71%'],tooltip: {show: false // 禁用该 pie 的悬浮提示},avoidLabelOverlap: false,label: {show: false,},emphasis: {disabled: false,scale: false,},color: ['#0e2a4dFF'],data: [{ value: 100},]},{type: 'pie',radius: ['71%', '86%'],tooltip: {show: false // 禁用该 pie 的悬浮提示},avoidLabelOverlap: false,label: {show: false,},emphasis: {disabled: false,},itemStyle: {borderColor: '#0F0F11FF',borderWidth: 1},color: ['#257B4FFF','#C8676DFF'],//C8676DFFdata: [{ value: 100 - props.percentData , name:'1'},{ value: props.percentData, name:'2' },]},{type: 'pie',radius: ['86%', '100%'],tooltip: {show: false // 禁用该 pie 的悬浮提示},avoidLabelOverlap: false,label: {show: false,},emphasis: {disabled: false,scale: false,},color: ['#0e2a4eFF',],data: [{ value: 100},]}],};
}onMounted(() => {getChartData();
})</script><template><div class="wh-full" ref="chart"></div>
</template><style scoped></style>

使用

<template><Lineclass="w-[calc(100%-30px)] h-[calc(100%-40px)] ml-15":chartXData="chartXLineData":seriesData="seriesLineData":seriesNameList="seriesNameList"stack="stack1"symbol="rect":title="`服务访问总数 ${titleData}`"top-grid="50":isSmooth="true"></Line>
</template><script lang="ts" setup>
import {onMounted, ref} from "vue"
import Line from '../Line.vue'onMounted(() => {init();
})const chartXLineData = ref([])
const seriesNameList = ref(["", '', ''])
const seriesLineData = ref<number[]>([])
const lineColorList = ["rgba(1, 145, 219, 1)", 'rgba(9, 162, 51, 1)', "rgba(191, 153, 18, 1)"]
const seriesList = []</script>
<style lang="scss" scoped></style>

相关文章:

一些ECharts配置

基于vue3&#xff0c;EChart5.4.3版本 Line <script setup lang"ts"> import {onBeforeUnmount, onMounted, ref, watch} from "vue" import {useEcharts, type ECOption} from "/composables" import * as echarts from "echarts/c…...

C调用Objective-C的类和方法

C调用Objective-C的类和方法 最近有一个C提供回调接口调用Objective-c接口来传递数据的需求&#xff0c;研究了很久&#xff0c;最终通过bing的AI对话查到了需要的内容&#xff0c;这里记录一下&#xff0c;算是给基于C的IOS开发开了一个头。 在Objective-C中&#xff0c;你可…...

驱动开发day1

头文件 #ifndef __HEAD_H__ #define __HEAD_H__ #define PHY_LED1_MODER 0X50006000 #define PHY_LED1_ODR 0X50006014#define PHY_LED2_MODER 0x50007000 #define PHY_LED2_ODR 0x50007014#define PHY_LED3_MODER 0x50006000 #define PHY_LED3_ODR 0x50006014#define P…...

C++ linux vscode编译

.cpp .h文件关系与编译命令 单一cpp文件编译多个.cpp文件编译.h头文件和.cpp源文件在同一目录下编译.h头文件和.cpp源文件在不同一目录下编译 单一cpp文件编译 //test.cpp为测试源文件&#xff0c; a.out为输出可执行文件 g test.cpp -o a.out多个.cpp文件编译 目录1结构如下…...

卷积神经网络CNN学习笔记

目录 1.全连接层存在的问题2.卷积运算3.填充(padding)3.1填充(padding)的意义 4.步幅(stride)5.三维数据的卷积运算6.结合方块思考7.批处理8.conv2d代码参考文章 1.全连接层存在的问题 在全连接层中&#xff0c;相邻层的神经元全部连接在一起&#xff0c;输出的数量可以任意决…...

Java的Socket Timeout和tcp的存活探测包是不是一个东西

背景 你有没有好奇过我们在java中通过Socket.setSoTimeout()设置timeout参数时&#xff0c;他怎么做到在timeout时间到了之后连接就报错的&#xff1f;有没有产生过误解&#xff0c;这个参数就是设置keepalive探测包的检测间隔&#xff1f; 问题真相 其实Socket.setSoTimeou…...

基于跳蛛优化的BP神经网络(分类应用) - 附代码

基于跳蛛优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于跳蛛优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.跳蛛优化BP神经网络3.1 BP神经网络参数设置3.2 跳蛛算法应用 4.测试结果&#xff1a;5.M…...

基于鹈鹕优化的BP神经网络(分类应用) - 附代码

基于鹈鹕优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于鹈鹕优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.鹈鹕优化BP神经网络3.1 BP神经网络参数设置3.2 鹈鹕算法应用 4.测试结果&#xff1a;5.M…...

『ARM』和『x86』处理器架构解析指南

前言 如果问大家是否知道 CPU&#xff0c;我相信不会得到否定的答案&#xff0c;但是如果继续问大家是否了解 ARM 和 X86 架构&#xff0c;他们的区别又是什么&#xff0c;相信可能部分人就会哑口无言了 目前随着深度学习、高性能计算、NLP、AIGC、GLM、AGI 的技术迭代&#…...

Android 13.0 系统设置 app详情页默认关闭流量数据的开关

1.概述 在13.0的系统产品开发中,移动流量消耗也是关于产品优化的一个方面,由于产品需求需要对app详情页的流量进行管控默认关闭流量开关,不让流量无故流失,所以需要从流量开关分析问题流量打开流程,然后关闭 2.系统设置 app详情页默认关闭流量数据的开关的核心类 package…...

054协同过滤算法的电影推荐系统

大家好✌&#xff01;我是CZ淡陌。一名专注以理论为基础实战为主的技术博主&#xff0c;将再这里为大家分享优质的实战项目&#xff0c;本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路…...

分享一个基于JavaWeb的私人牙科诊所预约挂号就诊系统的设计与实现项目源码调试 lw 开题 ppt

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人七年开发经验&#xff0c;擅长Java、Python、PHP、.NET、微信小程序、爬虫、大数据等&#xff0c;大家有这一块的问题可以一起交流&#xff01; &#x1f495;&…...

从零开始的C++(十一)

vector的模拟实现&#xff1a; 1.构造函数&#xff1a; vector(){}vector(int n, const T& value T()){ reserve(n);for (int i 0; i < n; i){push_back(value);}}template<class InputIterator>vector(InputIterator first, InputIterator last){ auto it …...

驱动开发day2

通过物理内存映射为虚拟内存 实现三盏LED灯亮灯灭 head.h #ifndef __HEAD_H__ #define __HEAD_H__#define PHY_LED1_MODER 0X50006000 #define PHY_LED1_ODR 0X50006014 #define PHY_RCC 0x50000A28#define PHY_LED2_MODER 0X50007000 #define PHY_LED2_ODR 0X50007014#defin…...

【CANoe】文件处理_hex文件读取解析

hex文件里面只有00&#xff0c;01&#xff0c;04三种码。那么我们在解析的时候只需要对这三种不同状态的进行不同的解析即可。 hex文件格式的解析&#xff0c;可阅读&#xff1a;HEX文件格式详解 首先创建一个Block的结构体&#xff0c;根据经验我们知道&#xff0c;一个数据…...

人脸识别顶会论文及源码合集,含2023最新

今天和大家聊聊人脸识别。 人脸识别的技术经过不断发展已经相当成熟&#xff0c;在门禁、监控、手机解锁、移动支付等实际场景都能看到。我们比较熟悉的识别方式是基于可见光图像的人脸识别&#xff0c;这种方式有个非常明显的缺点&#xff1a;光线限制。 在近两年的人脸识别…...

介绍drawio和图表使用场景

图表介绍 drawio是一个基于Web技术的草图、简图和图表的解决方案。 drawio支持在线编辑器&#xff0c;app.diagram.net.并支持不同的操作系统的桌面版离线安装版本。如&#xff1a;windows, linux, macOS。 对于个人或者团队&#xff0c;把图表绘制的安全放到第一位&#xff…...

leetcode-1438: 绝对差不超过限制的最长连续子数组

给你一个整数数组 nums &#xff0c;和一个表示限制的整数 limit&#xff0c;请你返回最长连续子数组的长度&#xff0c;该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit 。 如果不存在满足条件的子数组&#xff0c;则返回 0 。 示例 1&#xff1a; 输入&#x…...

【数据结构初阶】九、排序的讲解和实现(直接插入 \ 希尔 \ 直接选择 \ 堆 \ 冒泡 -- C语言)

相关代码gitee自取&#xff1a; C语言学习日记: 加油努力 (gitee.com) 接上期&#xff1a; 【数据结构初阶】八、非线性表里的二叉树&#xff08;二叉树的实现 -- C语言链式结构&#xff09;-CSDN博客 排序 排序的概念 所谓排序&#xff0c;就是使一串记录&#xff0c;按照…...

uview组件使用笔记

图标样式 修改图标的样式 通过color参数修改图标的颜色通过size参数修改图标的大小&#xff0c;单位为rpx 效果图 <u-icon name"photo" color"#2979ff" size"28"></u-icon>图片图标 1.3.0 这里说的图片图标&#xff0c;指的是小…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...

django blank 与 null的区别

1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是&#xff0c;要注意以下几点&#xff1a; Django的表单验证与null无关&#xff1a;null参数控制的是数据库层面字段是否可以为NULL&#xff0c;而blank参数控制的是Django表单验证时字…...

Python实现简单音频数据压缩与解压算法

Python实现简单音频数据压缩与解压算法 引言 在音频数据处理中&#xff0c;压缩算法是降低存储成本和传输效率的关键技术。Python作为一门灵活且功能强大的编程语言&#xff0c;提供了丰富的库和工具来实现音频数据的压缩与解压。本文将通过一个简单的音频数据压缩与解压算法…...

rknn toolkit2搭建和推理

安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 &#xff0c;不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源&#xff08;最常用&#xff09; conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…...