Echarts 定制化日历图

news2025/1/12 7:59:35

目录

改造一(变化X轴、Y轴label):

改造二(单元格、图例改造):

改造三(tooltip、细节优化):


最近在做可视化,发现日历图挺有意思,分享一波吧!!!

首先放下官方示例网址:Examples - Apache ECharts

 

 将它拉下备用后面在此基础解释并改造,如下代码

import React, { useEffect, useRef } from 'react'
import * as echarts from 'echarts'

type EChartsOption = echarts.EChartsOption

const App: React.FC = () => {
  const content = useRef(null)

  // 生成数据
  function getVirtualData(year: string) {
    const date = +echarts.time.parse(year + '-01-01')
    const end = +echarts.time.parse(year + '-12-31')
    const dayTime = 3600 * 24 * 1000
    const data: [string, number][] = []
    for (let time = date; time <= end; time += dayTime) {
      data.push([
        echarts.time.format(time, '{yyyy}-{MM}-{dd}', false),
        Math.floor(Math.random() * 1000),
      ])
    }
    return data
  }

  // 图表配置
  const option: EChartsOption = {
    visualMap: {
      show: false,
      min: 0,
      max: 10000,
    },
    calendar: {
      range: '2017',
    },
    series: {
      type: 'heatmap',
      coordinateSystem: 'calendar',
      data: getVirtualData('2017'),
    },
  }

  // 渲染函数
  const render = () => {
    const myChart = echarts.init(content.current!)
    option && myChart.setOption(option)
  }

  useEffect(() => {
    if (content.current) {
      render()
    }
  }, [])
  return (
    <>
      <div ref={content} style={{ height: '500px' }}></div>
    </>
  )
}

export default App

运行结果如图:

 下面开始改造代码了!!!


改造一(变化X轴、Y轴label):

加上了dayLabel、monthLabel、yearLabel配置,并且去掉月份分割线

  // 图表配置
  const option: EChartsOption = {
    visualMap: {
      show: false,
      min: 0,
      max: 10000,
    },
    calendar: {
      range: '2017',
      splitLine: {
        // 去掉月份分割线
        show: false,
      },
      dayLabel: {
        firstDay: 0,
        fontSize: 14,
        margin: 16,
        color: 'rgb(140,140,140)',
        verticalAlign: 'middle',
        nameMap: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'],
      },
      monthLabel: {
        nameMap: 'ZH',
        color: 'rgb(140,140,140)',
        align: 'center',
        margin: 4,
      },
      yearLabel: {
        show: false,
      },
    },
    series: {
      type: 'heatmap',
      coordinateSystem: 'calendar',
      data: getVirtualData('2017'),
    },
  }

改造二(单元格、图例改造):

改动visualMap(视觉映射)配置,即图例与日历图表映射

 visualMap: {
      type: 'piecewise',
      orient: 'horizontal',
      top:230,
      right:380,
      min: 0,
      max: 1000,
      text: ['多', '少'],
      textStyle: {
        color: 'rgb(140,140,140)',
        fontSize: 14,
        // 处理两端文字与图例单元格距离
        padding:[0,16],
        borderWidth:0.000001,
        borderColor:'transparent'
      },
      showLabel: false,
      itemWidth: 20,
      itemHeight: 20,
      itemGap: 4,
      selectedMode: false, //禁止选择
      inRange: {
        color: [
          'rgba(233,233,233)',
          '#95de64',
          '#52c41a',
          '#237804',
          '#092b00',
        ],
      },
      //图例分段
      pieces: [
        { min: 1000 },
        { min: 800, max: 1000 },
        { min: 500, max: 800 },
        { min: 300, max: 500 },
        { min: 1, max: 300 },
        { value: 0, color: 'rgba(233,233,233)' },
      ],
    },

改造三(tooltip、细节优化):

 样式可自行处理,tooltip可加气泡箭头,利用浮动做定位,可自行调节,有兴趣可试试

  // 图表配置
  const option: EChartsOption = {
    tooltip: {
      trigger: 'item',
      borderWidth: 0,
      formatter: (params: any) => {
        return `<div><b>${params.value[0]}</b> : ${params.value[1]}</div>`
      },
    },
    visualMap: {
      type: 'piecewise',
      orient: 'horizontal',
      top: 230,
      right: 380,
      min: 0,
      max: 1000,
      text: ['多', '少'],
      textStyle: {
        color: 'rgb(140,140,140)',
        fontSize: 14,
        // 处理两端文字与图例单元格距离
        padding: [0, 16],
        borderWidth: 0.000001,
        borderColor: 'transparent',
      },
      showLabel: false,
      itemWidth: 20,
      itemHeight: 20,
      itemGap: 4,
      selectedMode: false, //禁止选择
      inRange: {
        color: [
          'rgba(233,233,233)',
          '#95de64',
          '#52c41a',
          '#237804',
          '#092b00',
        ],
      },
      //图例分段
      pieces: [
        { min: 1000 },
        { min: 800, max: 1000 },
        { min: 500, max: 800 },
        { min: 300, max: 500 },
        { min: 1, max: 300 },
        { value: 0, color: 'rgba(233,233,233)' },
      ],
    },
    calendar: {
      range: '2017',
      cellSize: [20, 20], //格子尺寸
      itemStyle: {
        //解决格子间距
        borderWidth: 5,
        borderColor: '#fff',
      },
      splitLine: {
        // 去掉月份分割线
        show: false,
      },
      dayLabel: {
        firstDay: 0,
        fontSize: 14,
        margin: 16,
        color: 'rgb(140,140,140)',
        verticalAlign: 'middle',
        nameMap: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'],
      },
      monthLabel: {
        nameMap: 'ZH',
        color: 'rgb(140,140,140)',
        align: 'center',
        margin: 4,
      },
      yearLabel: {
        show: false,
      },
    },
    series: {
      type: 'heatmap',
      coordinateSystem: 'calendar',
      data: getVirtualData('2017'),
      // dimensions:, 数据名称处理,数据多时可以使用
      itemStyle: {
        borderRadius: 3,
      },
      emphasis: {
        disabled: true,
      },
    },
  }

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

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

相关文章

SpringBoot项目打包Docker镜像

1、创建springboot项目&#xff0c;并在根目录新建Dockerfile文件 Dockerfile文件内容 FROM adoptopenjdk/openjdk8:jre8u-nightly ADD target/test-k8s-0.0.1-SNAPSHOT.jar test-k8s-0.0.1-SNAPSHOT.jar ENTRYPOINT ["java","-jar","/test-k8s-0.0.…

Python编程——字符串的拼接

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 本文专栏&#xff1a;python专栏 专栏介绍&#xff1a;本专栏为免费专栏&#xff0c;并且会持续更新python基础知识&#xff0c;欢迎各位订阅关注。 前言 本文将讲解字符串的拼接与使用%进行拼接。 目录 ​编…

(二)Qt下多线程实现多个海康工业相机内触发采集回调取流显示

系列文章目录 提示&#xff1a;这里是该系列文章的所有文章的目录 第一章&#xff1a;&#xff08;一&#xff09;Qt下实现多个海康工业相机内触发采集回调取流显示 第二章&#xff1a;&#xff08;二&#xff09;Qt下多线程实现多个海康工业相机内触发采集回调取流显示 文章目…

单例模式之常见模式详解

单例模式之常见模式详解 单例模式的定义单例模式的分类饿汉模式懒汉模式 单例模式的主要特点单例模式的应用场景总结 单例模式的定义 单例模式是一种设计模式&#xff0c;用于确保一个类只有一个实例&#xff0c;并提供一个全局访问点来获取该实例。 在单例模式中&#xff0c;类…

2023需求最高的编程语言:Python、JavaScript和Java

科技招聘平台 CodinGame 和 CoderPad 最新发布了一份 2023 年科技行业招聘报告&#xff0c;基于对 14000 名专业人士的调查&#xff0c;对 2023 年科技行业招聘人员和求职者可能面临的情况进行了深入分析。其中一些关键亮点包括&#xff1a; 59% 的开发人员没有计算机科学方面的…

吴恩达机器学习笔记-week2

第2周 目录 第2周 四、多变量线性回归(Linear Regression with Multiple Variables) 4.1 多维特征4.2 多变量梯度下降4.3 梯度下降法实践1-特征缩放4.4 梯度下降法实践2-学习率4.5 特征和多项式回归4.6 正规方程4.7 正规方程及不可逆性(可选) 四、多变量线性回归(Linear Regres…

docker的安装以及常用命令详解

目录 一、docker简介 二、docker安装 三、常用命令 1、显示 Docker 版本信息 2、显示 Docker 系统信息&#xff0c;包括镜像和容器数 3、帮助 四、镜像管理 1、列出镜像 2、获取一个新的镜像 3、查找镜像 4、删除镜像 5、镜像导入与导出 五、容器生命周期 1、运行…

Bring Your Data!Self- supervised Evolution of Large Language Models

Bring Your Data&#xff01;Self- supervised Evolution of Large Language Models IntroductionMethod参考 Introduction 这篇论文提出了一种自监督的评估方式来衡量大型语言模型的能力和局限性。常规的基于数据集的评估方式存在一些缺点: 需要不断新建数据集。存在数据集和…

外包软件定制开发中时间和进度管理

引言 时间和进度管理是外包软件定制开发项目中至关重要的方面。有效地管理时间和进度可以确保项目按计划顺利进行&#xff0c;减少延误和风险&#xff0c;从而提高交付的可靠性和质量。然而&#xff0c;由于外包团队和客户位于不同的地理位置和时区&#xff0c;时间和进度管理…

[MySQL]MySQL索引

[MySQL]MySQL索引 文章目录 [MySQL]MySQL索引1. 索引的概念2. 认识磁盘磁盘的内部结构磁盘中的一个盘片结构定位扇区磁盘随机访问与连续访问 3. MySQL与磁盘交互的基本单位4. 建立共识5. 索引的理解创建测试表进行测试理解单个page理解多个page页目录其他的数据结构的问题聚簇索…

ModaHub魔搭社区:AI原生云向量数据库Zilliz Cloud角色与权限

目录 组织和项目 角色和权限 访问权限等级 文档推荐 Zilliz Cloud 提供访问控制。您可以灵活管理用户,为用户分配不同角色,授予用户不同的集群资源访问和操作权限。无权限的用户无法访问特定资源。 组织和项目 Zilliz Cloud 通过组织和项目实现访问控制和资源分离。 …

PostgreSQL数据库的部署与优化

文章目录 一.PostgreSQL数据库1.PostgreSQL数据库的概念1.1 PostgreSQL 的核心概念 2.PostgreSQL特点3.PostgreSQL的作用4.PostgreSQL的应用场景5.PostgreSQL、mysql、oracle的对比 二.Linux系统安装PostgresSQL&#xff08;Centos7&#xff09;1.更新yun源2.安装PostgreSQL2.1…

【消息队列设计总结】RabbitMQ、Kafka、RocketMQ对比之运行架构

目录 1 RabbitMQ 1.1 工作原理 1.2 名词解释 1.3 交换机的几种类型 2 Kafka 2.1 工作原理 2.2 基本概念 3 RocketMQ 3.1 工作原理 3.2 基本概念 4 RabbitMQ & Kafka & RocketMQ的差异 5 参考文档 1 RabbitMQ 1.1 工作原理 1.【消息生产】生产者&#xff0…

润本股份提交注册:拟募资约9亿元,赵贵钦、鲍松娟夫妇为实控人

撰稿|汤汤 来源|贝多财经 近日&#xff0c;润本生物技术股份有限公司&#xff08;下称“润本股份”&#xff09;在上海证券交易所递交招股书&#xff08;注册稿&#xff09;。据贝多财经了解&#xff0c;润本股份于2023年3月递交上市申请材料&#xff0c;准备在上海证券交易所…

MySQL-DDL-表的结构-查询修改删除

DDL&#xff08;表操作&#xff09; 查询 查询当前数据库所有表&#xff1a;show tables 查询表结构&#xff1a;desc 表名 查询建表语句&#xff1a;show create table 表名 修改&#xff08;主要还是通过图形化界面进行操作&#xff09; 添加字段&#xff1a;alter table …

王道考研数据结构第六章知识点总结

6.1.1图的基本概念 顶点集一定是非空集&#xff0c;边集可以是空集 非连通图&#xff1a;让任意n-1个顶点之间两两相连&#xff0c;另一个顶点与任意一个都不存在路径&#xff0c;则为非连通图的最大边数。 注意长三角地区铁路网不属于连通分量&#xff0c;因为它没有包含尽可能…

简单认识MySQL数据库索引

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、索引的概念1、简介2、作用3、索引的副作用&#xff1a;4、创建索引的原则依据5、索引的分类 二、索引的增删改查1.创建索引&#xff08;1&#xff09;创建普通索…

ios 通过xib自定义控件

通过xib自定义控件 xib和stroyboayd对比 共同点&#xff1a; 都是用来描述软件界面 都是用interface Builder工具来编辑 本质都是转换成代码去创建控件 不同点&#xff1a; xib是轻量级的&#xff0c;用来描述局部ui界面 创建模型文件 XMGCar 自定义控件 xib 图形设计 …

zookeeper和kafka与EFLFK集群

zookeeper和kafka 一&#xff1a;Zookeeper 概述1.Zookeeper 定义2.Zookeeper 工作机制3.Zookeeper 特点4.Zookeeper 数据结构5.Zookeeper 应用场景6.Zookeeper 选举机制6.1.第一次启动选举机制6.2.非第一次启动选举机制&#xff08;1&#xff09;当ZooKeeper 集群中的一台服务…

支持向量机(SVM)的超参数调整 C 和 Gamma 参数

作者:CSDN @ _养乐多_ 支持向量机(Support Vector Machine,SVM)是一种广泛应用的监督式机器学习算法。它主要用于分类任务,但也适用于回归任务。在本文中,我们将深入探讨支持向量机的两个重要参数:C和gamma。在阅读本文前,我假设您对该算法有基本的了解,并专注于这些…