当前位置: 首页 > 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")]},]
}

相关文章:

  • 【ubuntu】安装NVIDIA Container Toolkit
  • 电脑无法识别打印机usb设备怎么办 一键解决!
  • Django 中的 ORM 基础语法
  • 如何最简单、通俗地理解什么是NLP?
  • React Hooks底层执行逻辑详解、自定义Hooks、FiberScheduler
  • 湖北理元理律师事务所债务优化方案:让还款与生活平衡成为可能
  • 时序数据库 TDengine × Superset:一键构建你的可视化分析系统
  • PyQt学习系列05-图形渲染与OpenGL集成
  • 安全自动化与AI驱动防御
  • 欧拉公式的历史脉络、数学证明和现代意义
  • List转字符串去除[]和空格
  • STM32:深度解析RS-485总线与SP3485芯片
  • LCS4110R加密芯片在打印机墨盒的应用
  • 电子电路:能认为电抗也是在做功吗?
  • microsoft中word如何添加个人签名
  • 【动手学深度学习】2.3. 线性代数
  • GESP编程等级认证C++三级9-字符串2
  • 【SpringBoot】从零开始全面解析Spring IocDI (一)
  • #6 百日计划第六天 java全栈学习
  • uniapp 嵌入鸿蒙原生组件 具体步骤
  • 政府网站建设要求/有哪些推广平台和渠道
  • 原创 网站 源码/优化网站怎么做
  • 驻马店做网站/怎样注册网站
  • 网站建立吸引人的策划活动/b2b电商平台
  • 做企业营销网站/类聚seo
  • 做纺织生意用什么网站好/建站工具