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

echarts实现项目进度甘特图

描述

echarts并无甘特图配置项,我们可以使用柱状图模拟,具体配置项如下,可以在echarts直接运行
在这里插入图片描述

var option = {backgroundColor: "#fff",legend: {data: ["计划时间","实际时间"],align: "right",right: 80,top: 50},grid: {containLabel: true,show: false,right: 130,left: 40,bottom: 40,top: 90},xAxis: {type: "time",axisLabel: {"show": true,"interval": 0}},yAxis: {axisLabel: {show: true,interval: 0,formatter: function(value, index) {var last = ""var max = 5;var len = value.length;var hang = Math.ceil(len / max);if (hang > 1) {for (var i = 0; i < hang; i++) {var start = i * max;var end = start + max;var temp = value.substring(start, end) + "\n";last += temp; //凭借最终的字符串}return last;} else {return value;}}},data: ["项目一", "项目二", "项目三"]},tooltip: {trigger: "axis",formatter: function(params) {var res = "";var name = "";var start0 = "";var start = "";var end0 = "";var end = "";for (var i in params) {var k = i % 2;if (!k) { //偶数start0 = params[i].data;console.log(start0)start = start0.getFullYear() + "-" + (start0.getMonth() + 1) + "-" + start0.getDate();}if (k) { //奇数name = params[i].seriesName;end0 = params[i].data;end = end0.getFullYear() + "-" + (end0.getMonth() + 1) + "-" + end0.getDate();res += name + " : " + start + "~" + end + "</br>";}}return res;}},series: [{name: "计划时间",type: "bar",stack: "总量0",label: {normal: {show: true,color: "#000",position: "right",formatter: function(params) {return params.seriesName}}},itemStyle: {normal: {color: "skyblue",borderColor: "#fff",borderWidth: 2}},zlevel: -1,data: [new Date("2018-05-01"), new Date("2018-03-14"), new Date("2018-05-01")]},{name: "计划时间",type: "bar",stack: "总量0",itemStyle: {normal: {color: "white",}},zlevel: -1,z: 3,data: [new Date("2018-01-01"), new Date("2018-01-30"), new Date("2018-03-15")]},{name: "实际时间",type: "bar",stack: "总量6",label: {normal: {show: true,color: "#000",position: "right",formatter: function(params) {return params.seriesName}}},itemStyle: {normal: {color: 'orange',borderColor: "#fff",borderWidth: 2}},zlevel: -1,data: [new Date("2018-03-30"), new Date("2018-03-13"), new Date("2018-10-30")]},{name: "实际时间",type: "bar",stack: "总量6",itemStyle: {normal: {color: 'white',}},zlevel: -1,z: 3,data: [new Date("2018-01-01"), new Date("2018-02-16"), new Date("2018-03-30")]},]
}

进阶优化

添加警告标识以及文字叙述
在这里插入图片描述

var option = {backgroundColor: "#fff",legend: {data: ["计划时间","实际时间"],align: "right",right: 80,top: 50},grid: {containLabel: true,show: false,right: 130,left: 40,bottom: 40,top: 90},xAxis: {type: "time",axisLabel: {"show": true,"interval": 0}},yAxis: {axisLabel: {show: true,interval: 0,formatter: function(value, index) {var last = ""var max = 5;var len = value.length;var hang = Math.ceil(len / max);if (hang > 1) {for (var i = 0; i < hang; i++) {var start = i * max;var end = start + max;var temp = value.substring(start, end) + "\n";last += temp; //凭借最终的字符串}return last;} else {return value;}}},data: ["项目一", "项目二", "项目三"]},tooltip: {trigger: "axis",formatter: function(params) {var res = "";var name = "";var start0 = "";var start = "";var end0 = "";var end = "";for (var i in params) {var k = i % 2;if (!k) { //偶数start0 = params[i].data;console.log(start0)start = start0.getFullYear() + "-" + (start0.getMonth() + 1) + "-" + start0.getDate();}if (k) { //奇数name = params[i].seriesName;end0 = params[i].data;end = end0.getFullYear() + "-" + (end0.getMonth() + 1) + "-" + end0.getDate();res += name + " : " + start + "~" + end + "</br>";}}return res;}},series: [{name: "计划时间",type: "bar",stack: "总量0",label: {normal: {show: true,color: "#000",position: "right",formatter: function(params) {return params.seriesName}}},itemStyle: {normal: {color: "skyblue",borderColor: "#fff",borderWidth: 2}},zlevel: -1,data: [new Date("2018-05-01"), new Date("2018-03-14"), new Date("2018-05-01")]},{name: "计划时间",type: "bar",stack: "总量0",itemStyle: {normal: {color: "white",}},zlevel: -1,z: 3,data: [new Date("2018-01-01"), new Date("2018-01-30"), new Date("2018-03-15")]},{name: "实际时间",type: "bar",stack: "总量6",label: {normal: {show: true,color: "#000",position: "right",offset:[20,0],formatter: function(params) {return params.seriesName}}},itemStyle: {normal: {color: 'orange',borderColor: "#fff",borderWidth: 2}},zlevel: -1,data: [new Date("2018-03-30"), new Date("2018-03-13"), new Date("2018-10-30")],markPoint:{data:[{coord:[new Date("2018-10-30"),"项目三"]}],symbol:'circle',symbolSize:'14',animation:true,symbolOffset:[10,0],itemStyle:{color:'#fd9494'},emphasis:{disabled:false,label:{show:true,color:"#fff",backgroundColor:"#061234",borderWidth:1,padding:[6,8,6,8],offset:[20,60],align:'center',formatter:"{name|延迟完成}\n\n  {desc|预算不够:桥梁材料不够}",rich:{name:{color:"#c4d1fb",fontSize:12,padding:[0,0,-2,4],align:'center',},desc:{color:"#ffdd50",fontSize:10}}}}}},{name: "实际时间",type: "bar",stack: "总量6",itemStyle: {normal: {color: 'white',}},zlevel: -1,z: 3,data: [new Date("2018-01-01"), new Date("2018-02-16"), new Date("2018-03-30")]},]
}
http://www.xdnf.cn/news/601489.html

相关文章:

  • 甘特图实例 dhtmlxGantt.js
  • 第六章 进阶12 周报的妙用
  • OverLoCK:先概览,再聚焦。CVPR2025全新主干网络
  • 打卡Day33
  • 300. 最长递增子序列【 力扣(LeetCode) 】
  • android13 禁止用户修改指定APP运行时权限
  • 前端vue2-完全前端生成pdf->pdf-lib,html2canvas+jspdf,原生打印,三种方式(打印带有echarts图的pdf)
  • 【论文精读】2023 AAAI--FastRealVSR现实世界视频超分辨率(RealWorld VSR)
  • 学习黑客TTryHackMe — Tcpdump基础 | 网络安全入门(THM)
  • 【AS32X601驱动系列教程】SMU_系统时钟详解
  • Flume的大概简单介绍
  • 微信小程序:列表项上同样的css样式在IOS上字体大小不一样
  • 原创|查询大数据级数据表的AI实现思路(Excel2SQL,Text2SQL)
  • POI模板生成EXCEL 64000 style in a .xlsx Workbook
  • 数字信号处理大实验2 利用FFT估计信号的频率
  • QML与C++联合编程
  • OpenSSL详解
  • 【数据架构06】可信数据空间架构篇
  • MySQL 8.0 OCP 1Z0-908 题目解析(13)
  • MySQL 8.0 OCP 英文题库解析(八)
  • MySQL 8.0 OCP 1Z0-908 题目解析(12)
  • debian搭建ceph记录(接入libvirt)
  • 打破双亲委派模型的实践:JDBC与Tomcat的深度解析
  • RISC-V 开发板 MUSE Pi Pro OpenCV结合Gstreamer实时显示CSI摄像头
  • 03 基于 java udp 做一个dns服务器 和 一个dns代理服务器
  • Android Raspberry 请求 api 失败 iOS 请求成功【ssl 证书配置问题】
  • Android计算机网络学习总结
  • 【KWDB 创作者计划】_玩转数据库——纯硬核的工业级KWDB数据库产品评测报告(附测试代码)
  • Linux火墙管理及优化
  • 力扣-将x减到0的最小操作数