echarts案例之日历

news2024/10/7 19:25:53

一、此案例基于Vue3+ts,效果展示:

二、单个属性的值:

1、visualMap.pieces 根据值自定义每个小块的颜色

      pieces: [

        {

          min: 0, // 最小值

          max: 20, // 最大值

          label: '未统计', 

          color: 'rgba(27, 61, 71,1)',

        },

        {

          min: 20,

          max: 50,

          label: '优',

          color: '#22a9a5',

        },

        {

          min: 50,

          max: 70,

          label: '中',

          color: '#c6bb2a',

        },

        {

          min: 70,

          // max: 200,

          label: '差',

          color: '#a03e3e',

        },

      ],

2、yearLabel、monthLabel、dayLabel 年月日

例如:

yearLabel: { show: false }, // 不显示年(月同理)

    dayLabel: {

          firstDay: 1, // 设置第一天是几号

          nameMap: 'cn',

          color: '#407781',

        },

3、range 范围(数组)

数组里面是月份,格式如下:

 range: ['2023-01'],

4、splitLine.lineStyle.color

将日历外层边框颜色设为透明色,并且将边框的颜色和背景保持一致,就能实现格与格的间隔

splitLine: {

          lineStyle: {

            color: 'transparent', // 设置日历外层边框颜色

          },

        },

 itemStyle: {

          borderColor: '#0e2029', 

          borderWidth: 4,

        },

三、完整代码如下:

<template>
	<div class="container" ref="barRef"></div>
</template>
<script setup lang="ts" name="airWallQualityStatistics-calendar">
import { ref, onMounted } from 'vue';
import * as echarts from 'echarts';
import { formatDate } from '/@/utils/formatTime';
const barRef = ref();
let myChart: any = null; // echarts实例对象

onMounted(() => {
	initCharts();
});

// 变化尺寸
const onResize = (resize: any) => {
	console.log('resize: ', resize);
	myChart && myChart.resize();
};
window.addEventListener('resize', onResize);

const initCharts = () => {
	// 获取当前月(格式'2023-01')
	let time = formatDate(new Date(), 'YYYY-mm');
	// 对应值的数组
	let maxArr = [];
	//获取当前年
	const year = new Date(time).getFullYear();
	//获取当前月
	let month = new Date(time).getMonth() + 1;
	//新建日期数组(日期+值)
	const datas = [];
	//获取当前年月日期最大天数
	const dataLength = new Date(year, month).toJSON().substring(0, 10).split('-')[2];
	for (let i = 0; i < Number(dataLength); i++) {
		let months = month >= 10 ? month : '0' + month;
		let day = i + 1 >= 10 ? i + 1 : '0' + (i + 1);
		datas.push({ date: year + '-' + months + '-' + day, total: Math.floor(Math.random() * 100) }); //存入数组
	}
	let chartData: any = [];
	datas.forEach((item) => {
		maxArr.push(item.total);
		chartData.push({
			value: [item.date, item.total],
		});
	});
	let thisMonth = time; //当前月份

	let option = {
		tooltip: {
			backgroundColor: 'rgba(69, 173, 175, 0.6)',
			borderWidth: 0,
			textStyle: {
				color: '#fff',
				fontSize: 14,
			},
			formatter: function (params: any) {
				return '空气质量: ' + params.value[1];
			},
		},
		visualMap: {
			min: 0,
			max: 100,
			show: false,
			pieces: [
				{
					min: 0,
					max: 20,
					label: '未统计',
					color: 'rgba(27, 61, 71,1)',
				},
				{
					min: 20,
					max: 50,
					label: '优',
					color: '#22a9a5',
				},
				{
					min: 50,
					max: 70,
					label: '中',
					color: '#c6bb2a',
				},
				{
					min: 70,
					// max: 200,
					label: '差',
					color: '#a03e3e',
				},
			],
		},
		calendar: [
			{
				left: 'center',
				bottom: '10',
				cellSize: [35, 25],
				yearLabel: { show: false }, // 是否显示月份
				orient: 'vertical',
				dayLabel: {
					firstDay: 1,
					nameMap: 'cn',
					color: '#407781',
				},
				monthLabel: {
					show: false,
				},
				range: [thisMonth],
				itemStyle: {
					borderColor: '#0e2029',
					borderWidth: 4,
				},
				splitLine: {
					lineStyle: {
						color: 'transparent', // 设置日历外层边框颜色
					},
				},
			},
		],
		series: [
			{
				type: 'scatter',
				coordinateSystem: 'calendar',
				label: {
					show: true,
					formatter: function (params: any) {
						const d = echarts.number.parseDate(params.value[0]);
						return d.getDate();
					},
					// color: '#52fffc',
					color: '#fff',
				},
				data: chartData,
				silent: true,
			},
			{
				// name: '空气质量',
				type: 'heatmap',
				coordinateSystem: 'calendar',
				data: chartData,
			},
		],
	};
	myChart = echarts.init(barRef.value as HTMLDivElement);
	myChart.setOption(option, true);
};
</script>
<style lang="scss" scoped>
.container {
	width: 100%;
	height: 100%;
}
</style>

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

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

相关文章

机器学习第一周

一、概述 机器学习大致会被划分为两类&#xff1a;监督学习&#xff0c;无监督学习 1.1 监督学习 监督学习其实就是&#xff0c;给计算机一些输入x和正确的输出y&#xff08;训练数据集&#xff09;&#xff0c;让他总结x->y的映射关系&#xff0c;从而给他其他的输入x&a…

linux套接字选项API

获取套接字的选项值(getsockopt) 【头文件】 #include <sys/types.h> #include <sys/socket.h> 【函数原型】 int getsockopt(int sockfd, int level, int optname,void *optval, socklen_t *optlen); 【函数功能】 用于获取一个套接字的选项 【参数含义】 […

视图,触发器与存储过程

python操作MySQL SQL的由来: MySQL本身就是一款C/S架构&#xff0c;有服务端、有客户端&#xff0c;自身带了有客户端&#xff1a;mysql.exe python这门语言成为了MySQL的客户端(对于一个服务端来说&#xff0c;客户端可以有很多) 操作步骤&#xff1a; 1. 先链接MySQL …

Compose横向列表和网格列表

横向列表LazyRow LazyRow和LazyColumn使用类似。 /*** 横向列表LazyRow*/ Composable fun LazyRowTest() {val context LocalContext.currentval dataList arrayListOf<Int>()for (index in 1..50) {dataList.add(index)}LazyRow {items(dataList) { data ->Box(mo…

大数据可视化BI分析工具Apache Superset实现公网远程访问

大数据可视化BI分析工具Apache Superset实现公网远程访问 文章目录 大数据可视化BI分析工具Apache Superset实现公网远程访问前言1. 使用Docker部署Apache Superset1.1 第一步安装docker 、docker compose1.2 克隆superset代码到本地并使用docker compose启动 2. 安装cpolar内网…

CentOS 安装 tomcat 并设置 开机自启动

CentOS 安装 tomcat 并设置 开机自启动 下载jdk和tomcat curl https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz curl https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.15/bin/apache-tomcat-10.1.15.tar.gz解压jdk和tomcat并修改目录名称 tar -z…

Linux下利用Docker快速部署Kafka

1.摘要 在本文中,介绍了利用Docker安装Kafka的基础环境要求; 利用Docker安装zookeeper过程; 利用Docker安装Kafka过程;进入容器配置生产者和消费者过程; 演示生产者和消费者通讯; 故障排查方法。 2.基础环境准备 提前准备一台安装Linux系统的主机或虚拟机,我这里安装的是Ubu…

Photoshop使用笔记总目录

Photoshop基础学习之工具学习 一、【Photoshop界面认识】 二、【 Photoshop常用快捷键】 三、【色彩模式与颜色填充】 四、【选区】 五、【视图】 六、【常用工具组】 七、【套索工具组】 八、【快速选择工具组】 九、【裁剪工具组】 十、【图框工具组】 十一、【吸取…

二叉树中的topk问题(带图详解)

&#x1f5e1;CSDN主页&#xff1a;d1ff1cult.&#x1f5e1; &#x1f5e1;代码云仓库&#xff1a;d1ff1cult.&#x1f5e1; &#x1f5e1;文章栏目&#xff1a;数据结构专栏&#x1f5e1; TopK问题 在给定的n的数据中&#xff0c;求出这n个数据中最大的k个数字 TopK的代码&a…

C++通过指针获取类的私有成员

前言 C并没有类似java的反射机制&#xff0c;可以暴力获取类的私有成员。然而C因程序员自行管理内存&#xff0c;所以可以通过指针干任何事情。当然&#xff01;操作指针是非常危险的&#xff0c;谨慎操作&#xff01; // dome.cpp : 此文件包含 "main" 函数。程序执…

HackTheBox-Starting Point--Tier 0---Redeemer

文章目录 一 题目二 实验过程 一 题目 Tags Redis、Vulnerability Assessment、Databases、Reconnaissance、Anonymous/Guest Access译文&#xff1a;redis、漏洞评估、数据库、侦察、匿名/访客访问Connect To attack the target machine, you must be on the same network.…

微信智能对话初体验:5分钟搭建免费专属的智能对话机器人

写在前面 投入AI创业几个月了&#xff0c;AI小程序快要上线了&#xff0c;已经在备案审批中&#xff0c;想一起AI搞事情的可以联系我看是否有合作机会。昨天刷X时&#xff0c;看到有人说微信新上线了这个平台&#xff1a;https://chatbot.weixin.qq.com/&#xff0c;赶紧试试&…

VulnHub metasploitable-1

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏…

科技联众,互利共赢 | 卡驰科技(深圳)有限公司CEO张倍铭博士到访拓世科技集团,共探跨境电商,海外拓展无限可能

在创新的浪潮中&#xff0c;人工智能以其强大的能量持续推动着各行各业的进步&#xff0c;拓世科技集团作为人工智能领域的引领者&#xff0c;通过不断合作和交流&#xff0c;与众多领域的佼佼者共同探讨数字时代的无限可能。卡驰科技&#xff08;深圳&#xff09;有限公司作为…

跨境商城开发:10个关键步骤带你实现全球销售

在数字化时代&#xff0c;跨境电商成为企业扩大市场规模的重要策略之一。本文将揭示为何跨境商城开发是实现全球销售的绝佳途径&#xff0c;以及为什么你应该专注于跨境商城的开发与建设。 十个必备步骤&#xff0c;助你成功搭建跨境商城 第一步&#xff1a;市场研究与目标定…

pdf转jpg的方法【ps和工具方法】

pdf转jpg的方法&#xff1a; 1.photoshop办法&#xff1a; pdf直接拖入ps中&#xff0c;另存为*.Jpg文件即可 另外注意的时候&#xff0c;有时候别人给你pdf文件中包含你需要的jpg文件&#xff0c;千万不要截图进入ps中&#xff0c;直接把文件拖入ps中&#xff0c;这样的文件…

元宇宙游戏大爆炸,UTONMOS元宇宙游戏成爆品

随着元宇宙概念不断的被深化&#xff0c;目前许多用户群体已经注意到并加入元宇宙领域。而元宇宙比较火的场景有社交、游戏、虚拟会议等&#xff0c;其中元宇宙游戏开发是较火的一个赛道&#xff0c;成为元宇宙从业者们入局的方向。 相比国内其他公司还处于概念阶段&#xff0…

STM32 中断NVIC详解,配置及示例

NVIC全称 Nested Vectored Controller 嵌套向量中断控制器 它是一种硬件设备&#xff0c;用于管理和协调处理器的中断请求。NVIC可以管理多个中断请求&#xff0c;并按优先级处理它们。当一个中断请求到达时&#xff0c;NVIC会确定其优先级并决定是否应该中断当前执行的程序&am…

python自动化测试(二):获取元素定位的基本方式

目录 一、前置代码 二、通过HTML元素ID的方式去进行元素定位 三、通过HTML元素的name属性进行元素定位 四、练习一&#xff1a;打开百度登录界面并输入数据后登录 五、通过HTML元素的类名来进行元素定位 六、通过链接的文本值方式进行元素定位 七、通过部分的链接文本值…

mac电脑怎么永久性彻底删除文件?

Mac老用户都知道在我们查看Mac内存时都会发现有一条“其他文件”占比非常高&#xff0c;它是Mac储存空间中的“其他”数据包含不可移除的移动资源&#xff0c;如&#xff0c;Siri 语音、字体、词典、钥匙串和 CloudKit 数据库、系统无法删除缓存的文件等。这些“其他文件”无用…