Vue echarts繪制甘特圖的示例代碼
什么是甘特圖
甘特圖(Gantt chart)又稱為橫道圖、條狀圖(Bar chart)。其通過條狀圖來顯示項目、進度和其他時間相關的系統(tǒng)進展的內在關系隨著時間進展的情況。以提出者亨利·勞倫斯·甘特(Henry Laurence Gantt)先生的名字命名。
甘特圖以圖示通過活動列表和時間刻度表示出特定項目的順序與持續(xù)時間。一條線條圖,橫軸表示時間,縱軸表示項目,線條表示期間計劃和實際完成情況。直觀表明計劃何時進行,進展與要求的對比。便于管理者弄清項目的剩余任務,評估工作進度。
1、不同的顏色表示不同的階段。
2、每一行表示一個任務。
3、任務與任務之間的黑色箭頭表示任務之間的依賴關系,必需完成前面的才能完成后面的。
通過這一張甘特圖,能一眼看出以下信息:
今天應該做什么任務
這個任務從什么時候開始,到什么時候結束
在某一段時間有哪些任務
應該先做哪些任務再做哪些任務
哪些任務可以同時做
這個任務是否被其他任務依賴,如果是,那么這個任務就不能推遲,必需按時完成或者提前完成,否則會影響后面的任務
大任務下面有哪些子任務
可以顯示任務的里程碑是什么時候
使用場景
主要用于橫坐標固定,比如一天24小時,這樣就可以根據(jù)Y軸數(shù)據(jù)可正可負
速用示例版
可以直接將option 復制即可
option = { tooltip: { trigger: 'axis' }, grid: { top: '10%', left: '3%', right: '4%', bottom: '3%', containLabel: true }, toolbox: { show: true, feature: { saveAsImage: {} } }, xAxis: { type: 'category', boundaryGap: false, splitLine: { show: true }, axisLabel: { padding: [0, 0, 0, -20] // 四個數(shù)字分別為上右下左與原位置距離 }, data: ['00:00', '01:00', '02:00', '03:00', '04:00', '05:00', '06:00','07:00', '08:00', '09:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00', '17:00', '18:00', '19:00', '20:00', '21:00', '22:00', '23:00', '24:00'] }, yAxis: { type: 'value', name: '單位(kW)', // scale: true, splitLine: { show: false }, axisLabel: { formatter: '{value}', } }, series: [ { name: '', type: 'line', smooth: true, showSymbol: false, symbol: false, lineStyle: { normal: { width: 10 } }, markPoint: { data: [ { name: '最大值', type: 'max', valueIndex: 0 } ] }, data: [300, 300, 300, 300, 300, 300, 300], }, { name: '', type: 'line', smooth: true, showSymbol: false, symbol: false, lineStyle: { width: 10 }, markPoint: { data: [ { name: '最大值', type: 'max', valueIndex: 0 } ] }, data: ['','','','','','', 500, 500, 500, 500, 500] }, { name: '', type: 'line', smooth: true, showSymbol: false, symbol: false, lineStyle: { normal: { width: 10 } }, markPoint: { data: [ { name: '最大值', type: 'max', valueIndex: 0 } ] }, data: ['','','','','','','', '', '','',-100, -100,-100, -100,-100] }, { name: '', type: 'line', smooth: true, showSymbol: false, symbol: false, lineStyle: { normal: { width: 10 } }, markPoint: { data: [ { name: '最大值', type: 'max', valueIndex: 0 } ] }, data: ['','','','','','','', '', '','','','','','','',200,200,200,200,200,200,200,200,200,200] } ] };
潤雨細無聲版
<div ref="strategyDomRef" style="width: 800px; height: 600px;" >
import * as echarts from 'echarts'
mounted() { let apiData = [ { startTime: '00:00', endTime: '05:00', value: 200, }, { startTime: '05:00', endTime: '12:00', value: 400, }, { startTime: '12:00', endTime: '18:00', value: -200, }, { startTime: '18:00', endTime: '20:00', value: 300, }, { startTime: '20:00', endTime: '24:00', value: 500, }, ] this.dealArr(apiData) this.echartsDraw() }, methods:{ //數(shù)據(jù)處理 dealArr(apiData) { let YAxis = [] apiData.forEach((element) => { let dealArr = new Array( element.endTime == '24:00' ? 25 : parseInt(element.endTime) + 1 ).fill(Number(element.value)) let yItem = { name: ' ', type: 'line', showSymbol: false, endLabel: { show: true, formatter: '{c}', position: 'start', fontSize: 12, }, lineStyle: { width: 10, color: '#36CFC9', }, data: dealArr.fill('', 0, parseInt(element.startTime)), } YAxis.push(yItem) }) this.yAxis = YAxis }, //圖表繪制 echartsDraw(){ let charts = echarts.init(this.$refs.strategyDomRef) let option = { tooltip: { trigger: 'axis', formatter: function (params) { return '<br/> 功率 : ' + params[0].value }, }, grid: { top: '10%', left: '3%', right: '4%', bottom: '3%', containLabel: true, }, xAxis: { type: 'category', boundaryGap: false, splitLine: { // 網(wǎng)格線 show: true, lineStyle: { //分割線 color: '#C0C4CC', width: 1, type: 'dashed', //dotted:虛線 solid:實線 }, }, axisLabel: { padding: [0, 0, 0, -20], // 四個數(shù)字分別為上右下左與原位置距離 }, data: [ '00:00', '01:00', '02:00', '03:00', '04:00', '05:00', '06:00', '07:00', '08:00', '09:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00', '17:00', '18:00', '19:00', '20:00', '21:00', '22:00', '23:00', '24:00', ], }, yAxis: { type: 'value', name: '單位(kW)', splitLine: { // 網(wǎng)格線 show: true, lineStyle: { //分割線 color: '#C0C4CC', width: 1, type: 'dashed', //dotted:虛線 solid:實線 }, }, axisLabel: { formatter: '{value}', }, }, series: this.yAxis, } charts.setOption(option, true) //清空畫布,防止緩存 charts.clear() //使用剛指定的配置項和數(shù)據(jù)顯示圖表。 charts.setOption(option, true) window.addEventListener('resize', function () { charts.resize() }) } }
到此這篇關于Vue echarts繪制甘特圖的示例代碼的文章就介紹到這了,更多相關Vue echarts甘特圖內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
webpack4+express+mongodb+vue實現(xiàn)增刪改查的示例
這篇文章主要介紹了webpack4+express+mongodb+vue 實現(xiàn)增刪改查的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-11-11解決vue2.0 element-ui中el-upload的before-upload方法返回false時submit(
這篇文章主要介紹了vue2.0 element-ui中el-upload的before-upload方法返回false時submit()不生效的解決方法,這里需要主要項目中用的element-ui是V1.4.3,感興趣的朋友參考下吧2018-08-08vue 使用 vue-pdf 實現(xiàn)pdf在線預覽的示例代碼
這篇文章主要介紹了vue 使用 vue-pdf 實現(xiàn)pdf在線預覽的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-04-04vue2.0基于vue-cli+element-ui制作樹形treeTable
這篇文章主要介紹了vue2.0基于vue-cli+element-ui制作樹形treeTable,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-04-04vue使用showdown并實現(xiàn)代碼區(qū)域高亮的示例代碼
這篇文章主要介紹了vue使用showdown并實現(xiàn)代碼區(qū)域高亮的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-10-10