【echarts】甘特图

news2024/9/21 16:33:57

在这里插入图片描述

const milestones = [
    { progress: 100, milestoneName: '阶段一', startDate: '2020-12-23', endDate: '2021-01-30' },
    { progress: 100, milestoneName: '阶段二', startDate: '2021-01-15', endDate: '2021-03-15' },
    { progress: 100, milestoneName: '阶段三', startDate: '2021-03-10', endDate: '2021-04-05' },
    { progress: 94, milestoneName: '阶段四', startDate: '2021-04-06', endDate: '2021-04-29' },
    { progress: 0, milestoneName: '阶段五', startDate: '2021-04-30', endDate: '2021-05-03' },
];

const colors = [
'#f19489',
'#bb8fce',
'#85c1e9',
'#76d7c3',
'#81e0aa',
'#f7dc6f',
'#e59865'
]

const categories = milestones.map(milestone => milestone.milestoneName);
const data = milestones.map((milestone, index) => {
    const startTime = new Date(milestone.startDate).getTime();
    const endTime = new Date(milestone.endDate).getTime();
    const duration = endTime - startTime;
    
    return {
        name: milestone.milestoneName,
        value: [
            index,         // category index
            startTime,     // start time
            endTime,       // end time
            duration       // duration in milliseconds
        ],
        itemStyle: {
            normal: {
                color: colors[index]
            }
        }
    };
});

function renderItem(params, api) {
    const categoryIndex = api.value(0);
    const start = api.coord([api.value(1), categoryIndex]);
    const end = api.coord([api.value(2), categoryIndex]);
    const height = api.size([0, 1])[1] * 0.6;

    const rectShape = echarts.graphic.clipRectByRect({
        x: start[0],
        y: start[1] - height / 2,
        width: end[0] - start[0],
        height: height
    }, {
        x: params.coordSys.x,
        y: params.coordSys.y,
        width: params.coordSys.width,
        height: params.coordSys.height
    });

    return rectShape && {
        type: 'rect',
        shape: rectShape,
        style: api.style()
    };
}

option = {
    tooltip: {
        formatter: function (params) {
            return params.marker + params.name + ': ' + (params.value[3] / 1000 / 60 / 60 / 24).toFixed(1) + ' days';  // converting ms to days
        }
    },
    dataZoom: [{
        type: 'slider',
        filterMode: 'weakFilter',
        showDataShadow: false,
        top: 400,
        height: 10,
        borderColor: 'transparent',
        backgroundColor: '#e2e2e2',
        handleIcon: 'M10.7,11.9H9.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z', // jshint ignore:line
        handleSize: 20,
        handleStyle: {
            shadowBlur: 6,
            shadowOffsetX: 1,
            shadowOffsetY: 2,
            shadowColor: '#aaa'
        },
        labelFormatter: ''
    }, {
        type: 'inside',
        filterMode: 'weakFilter'
    }],
    grid: {
        height: 300
    },
    xAxis: {
        type: 'time',
        axisLabel: {
            formatter: function (val) {
                return new Date(val).toLocaleDateString();
            }
        }
    },
    yAxis: {
        type: 'category',
        data: categories
    },
    series: [{
        type: 'custom',
        renderItem: renderItem,
        encode: {
            x: [1, 2],
            y: 0
        },
        data: data
    }]
};

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

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

相关文章

ubuntu 24.04执行apt-get update报错处理

文章目录 一、apt-get update报错内容二、解决启动失败的服务推荐阅读 今天在做Ubuntu 24.04更新时,突然跳出两个报错,这在之前还从未遇到过,处理过程记录和分享一下: 一、apt-get update报错内容 报错截图参考如下: …

现货黄金美盘开盘时间是什么呢

现货黄金的开盘时间会因为地区和平台而有所差异,一般来说,香港的平台在北京时间周一早间7点左右会开盘,并一直持续周六凌晨才收盘,周六和周日是市场的休市时间,期间交易平台一般会关闭,无法进行交易&#x…

一文读懂什么是进销存!进销存有何价值作用?

企业在运营过程中,常常会遇到诸如库存不准确、采购计划混乱、销售数据跟踪困难等问题,这些问题不仅影响了企业的日常运营,还可能导致客户满意度下降、利润受损。而一个合适的进销存系统,就像是一把钥匙,可以帮助企业打…

MySQL基础练习题34-游戏玩法分析4

目录 题目 准备数据 分析数据 总结 题目 报告在首次登录的第二天再次登录的玩家的 比率,四舍五入到小数点后两位。换句话说,你需要计算从首次登录日期开始至少连续两天登录的玩家的数量,然后除以玩家总数。 准备数据 ## 创建库 create…

为什么要学医疗器械维修?

在当今高速发展的医疗领域,医疗器械维修已成为一个极具吸引力和潜力的职业选择。那么,为什么要学习医疗器械维修呢? 一、稳定且持续增长的需求 随着医疗技术的不断进步,医疗器械的种类和数量日益增多。从常见的 X 光机、CT 扫描仪…

新专利:温室土壤温湿度预测模型构建方法和程序产品

( 于景鑫 国家农业信息化工程技术研究中心)在现代设施农业生产中,温室微环境的精准调控是提高作物产量和品质的关键。然而,由于温室内外环境因素的复杂多变,尤其是土壤温湿度的非线性、非平稳特性,传统的预…

【vue3|第23期】Vite + Vue3: 深入理解public和assets文件夹的作用与使用

日期:2024年8月14日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方&#xf…

如果让你消息队列,该如何设计?说一下你的思路

在当今的分布式系统中,消息队列是一个不可或缺的组件,它在系统解耦、流量削峰、异步处理等方面发挥着重要作用。 如果我要设计一个消息队列,我会从以下几个关键点出发呢? 让我们来探讨一下如何设计一个消息队列的架构。 实现内存…

【MySQL】数据库初识

文章目录 前言一、MySQL的基本结构二、MySQL的组成三、数据库的简单使用数据库操作数据类型认知数值类型字符串类型日期类型 数据库表操作 总结 前言 数据库是一类软件,有MySQL、Oracle、SQL Server、Redis等作为代表,通过数据库能够对数据进行管理和组…

六大热门及两个趋冷的网络安全趋势

AI不仅在改变威胁环境,还在改变安全团队保护其组织的方式,然而,AI并不是网络安全专业人士应该关注的唯一趋势。 在网络安全领域,与其他领域一样,AI和GenAI都是人们关注的焦点,恶意行为者正在利用AI和GenAI创造更具隐蔽性的恶意软件、更具说服力的钓鱼邮件以及更逼真的深…

DevExpress开发WPF应用实现对话框总结:编织界面的艺术之旅

在软件开发的浩瀚星空中,WPF(Windows Presentation Foundation)以其卓越的界面表现力和丰富的控件库,成为了众多开发者心中的璀璨明珠。而DevExpress,作为WPF领域的佼佼者,更是以其强大的组件库和易于集成的…

大模型时代来临:程序员如何自处,产品经理如何迎接新挑战

一名失业中的程序员,因为一次大胆的求职之举登上了微博热搜。 向瑶函花费999元,在广州地铁珠江新城站购买了一个广告位5天的使用权,用来投放自己的简历二维码,扫码就可以了解这名程序员“飘零的前半生”。 向瑶函是在2023年5月“…

灵巧守门员——代理模式(Java实现)

代理模式不仅在控制对象访问上展现了其独特的优势,还在功能扩展和系统安全性上起到了重要作用。上期我们介绍了代理模式在Python中的实现,今天,我们将继续探讨代理模式,并展示如何在Java中实现它。 什么是代理模式? …

How do you implement OpenAI GPT-3 Api Client in PHP?

题意:如何在 PHP 中实现 OpenAI GPT-3 API 客户端? 问题背景: I need help understanding the vague instructions on https://packagist.org/packages/orhanerday/open-ai 我需要帮助来理解这些模糊的说明... I downloaded the package fr…

PDF转图片新潮流,4款神器告别手动截图

在这个信息爆炸的时代,PDF文件因为能在各种设备上保持格式不变,成了我们学习和工作中的好帮手。今天,我就诚心诚意地给你推荐几款现在特别流行的PDF转图片工具。这些工具操作起来非常简单,转换速度快,而且转换出来的图…

前端工程化工具——plop的使用-生成模板页面

背景 软件列表 软件名称版本号备注vue3.2.13vue-cli5.0.8plop4.0.1 操作步骤 新建vue3工程 vue create test-plop按提示完成操作即可 modules安装工具选择&#xff1a;yarn或npm均可 安装plop模块 yarn add plop -g新建模板文件 page1/index.hbs <template><…

【启动centos报错】另一个程序已锁定文件的一部分,进程无法访问,打不开磁盘.

启动centos报错 另一个程序已锁定文件的一部分&#xff0c;进程无法访问打不开磁盘“D:\Program2\CentOS\CentOS7\CentOS7.vmdk”或它所依赖的某个快照磁盘。模块“Disk”启动失败。未能启动虚拟机。解决方法 删除.lck文件

基于InP的通用光子集成技术(四)

7.ASPIC设计环境 在光子学中引入通用晶圆方法将导致光子芯片复杂度的重大变化&#xff1a;它将把设计从器件级转移到光路级&#xff0c;这一转变发生在20世纪70年代和80年代的微电子中&#xff0c;现在也发生在PIC中。 在通用方法中&#xff0c;可以通过具有许多构建块的PDK访…

数学建模笔记(2):Topsis分析法

一.评价类问题的几个关键词 1.指标 评价一个方案或者对象我们需要有评价指标&#xff0c;即从哪几个方面进行评价。比如评价一个人在保研上的竞争力&#xff0c;我们可以从绩点&#xff0c;课外竞赛&#xff0c;科研成果&#xff0c;学生工作&#xff0c;志愿服务等几个方面来…

Qt QTabWidget之创建标签页的多页面切换

QTabWidget 用来分页显示 重要函数: 1.void setTabText(int, QString); //设置页面的名字. 2.void setTabToolTip(QString); //设置页面的提示信息. 3.void setTabEnabled(bool); //设置页面是否被激活. 4.void setTabPosition(QTabPosition::South); //设置页面名字的位置. 5.…