Vue echarts繪制甘特圖的示例代碼
什么是甘特圖
甘特圖(Gantt chart)又稱為橫道圖、條狀圖(Bar chart)。其通過條狀圖來顯示項(xiàng)目、進(jìn)度和其他時(shí)間相關(guān)的系統(tǒng)進(jìn)展的內(nèi)在關(guān)系隨著時(shí)間進(jìn)展的情況。以提出者亨利·勞倫斯·甘特(Henry Laurence Gantt)先生的名字命名。
甘特圖以圖示通過活動(dòng)列表和時(shí)間刻度表示出特定項(xiàng)目的順序與持續(xù)時(shí)間。一條線條圖,橫軸表示時(shí)間,縱軸表示項(xiàng)目,線條表示期間計(jì)劃和實(shí)際完成情況。直觀表明計(jì)劃何時(shí)進(jìn)行,進(jìn)展與要求的對(duì)比。便于管理者弄清項(xiàng)目的剩余任務(wù),評(píng)估工作進(jìn)度。

1、不同的顏色表示不同的階段。
2、每一行表示一個(gè)任務(wù)。
3、任務(wù)與任務(wù)之間的黑色箭頭表示任務(wù)之間的依賴關(guān)系,必需完成前面的才能完成后面的。
通過這一張甘特圖,能一眼看出以下信息:
今天應(yīng)該做什么任務(wù)
這個(gè)任務(wù)從什么時(shí)候開始,到什么時(shí)候結(jié)束
在某一段時(shí)間有哪些任務(wù)
應(yīng)該先做哪些任務(wù)再做哪些任務(wù)
哪些任務(wù)可以同時(shí)做
這個(gè)任務(wù)是否被其他任務(wù)依賴,如果是,那么這個(gè)任務(wù)就不能推遲,必需按時(shí)完成或者提前完成,否則會(huì)影響后面的任務(wù)
大任務(wù)下面有哪些子任務(wù)
可以顯示任務(wù)的里程碑是什么時(shí)候
使用場(chǎng)景
主要用于橫坐標(biāo)固定,比如一天24小時(shí),這樣就可以根據(jù)Y軸數(shù)據(jù)可正可負(fù)
速用示例版
可以直接將option 復(fù)制即可
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] // 四個(gè)數(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]
}
]
};

潤雨細(xì)無聲版
<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:實(shí)線
},
},
axisLabel: {
padding: [0, 0, 0, -20], // 四個(gè)數(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:實(shí)線
},
},
axisLabel: {
formatter: '{value}',
},
},
series: this.yAxis,
}
charts.setOption(option, true)
//清空畫布,防止緩存
charts.clear()
//使用剛指定的配置項(xiàng)和數(shù)據(jù)顯示圖表。
charts.setOption(option, true)
window.addEventListener('resize', function () {
charts.resize()
})
}
}

到此這篇關(guān)于Vue echarts繪制甘特圖的示例代碼的文章就介紹到這了,更多相關(guān)Vue echarts甘特圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
webpack4+express+mongodb+vue實(shí)現(xiàn)增刪改查的示例
這篇文章主要介紹了webpack4+express+mongodb+vue 實(shí)現(xiàn)增刪改查的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-11-11
解決vue2.0 element-ui中el-upload的before-upload方法返回false時(shí)submit(
這篇文章主要介紹了vue2.0 element-ui中el-upload的before-upload方法返回false時(shí)submit()不生效的解決方法,這里需要主要項(xiàng)目中用的element-ui是V1.4.3,感興趣的朋友參考下吧2018-08-08
vue 使用 vue-pdf 實(shí)現(xiàn)pdf在線預(yù)覽的示例代碼
這篇文章主要介紹了vue 使用 vue-pdf 實(shí)現(xiàn)pdf在線預(yù)覽的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
vue后臺(tái)管理添加多語言功能的實(shí)現(xiàn)示例
這篇文章主要介紹了vue后臺(tái)管理添加多語言功能的實(shí)現(xiàn)示例,幫助大家更好的理解和學(xué)習(xí)使用vue框架,感興趣的朋友可以了解下2021-04-04
vue2.0基于vue-cli+element-ui制作樹形treeTable
這篇文章主要介紹了vue2.0基于vue-cli+element-ui制作樹形treeTable,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
vue使用showdown并實(shí)現(xiàn)代碼區(qū)域高亮的示例代碼
這篇文章主要介紹了vue使用showdown并實(shí)現(xiàn)代碼區(qū)域高亮的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10

