最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue echarts繪制甘特圖的示例代碼

 更新時(shí)間:2024年03月28日 09:21:32   作者:緣月敘文  
甘特圖是一種條狀圖,直觀展示項(xiàng)目進(jìn)展隨時(shí)間的走勢(shì)及聯(lián)系,其中,項(xiàng)目時(shí)間由橫軸表示,項(xiàng)目活動(dòng)由縱軸表示,本文給大家介紹了Vue echarts繪制甘特圖的實(shí)現(xiàn)方法,并有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下

什么是甘特圖

甘特圖(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)系,必需完成前面的才能完成后面的。

通過這一張甘特圖,能一眼看出以下信息:

  1. 今天應(yīng)該做什么任務(wù)

  2. 這個(gè)任務(wù)從什么時(shí)候開始,到什么時(shí)候結(jié)束

  3. 在某一段時(shí)間有哪些任務(wù)

  4. 應(yīng)該先做哪些任務(wù)再做哪些任務(wù)

  5. 哪些任務(wù)可以同時(shí)做

  6. 這個(gè)任務(wù)是否被其他任務(wù)依賴,如果是,那么這個(gè)任務(wù)就不能推遲,必需按時(shí)完成或者提前完成,否則會(huì)影響后面的任務(wù)

  7. 大任務(wù)下面有哪些子任務(wù)

  8. 可以顯示任務(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]
    }
  ]
};

潤(rùn)雨細(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)文章

  • vue內(nèi)置指令詳解

    vue內(nèi)置指令詳解

    指令是Vue模板中最常用的一項(xiàng)功能,它帶有前綴v-,主要職責(zé)是當(dāng)其表達(dá)式的值改變時(shí),相應(yīng)的將某些行為應(yīng)用在 DOM 上。這篇文章主要介紹了vue內(nèi)置指令詳解,需要的朋友可以參考下
    2018-04-04
  • 如何使用vue3+uni-app封裝音樂播放插件

    如何使用vue3+uni-app封裝音樂播放插件

    UniApp是一個(gè)基于Vue.js開發(fā)的跨平臺(tái)應(yīng)用開發(fā)框架,它可以使用一套代碼同時(shí)構(gòu)建iOS、Android和Web應(yīng)用,這篇文章主要給大家介紹了關(guān)于如何使用vue3+uni-app封裝音樂播放插件的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • Vue使用VueUse構(gòu)建一個(gè)支持暫停/重置的CountUp組件

    Vue使用VueUse構(gòu)建一個(gè)支持暫停/重置的CountUp組件

    本文介紹了如何利用 VueUse 的 useRafFn 從零構(gòu)建一個(gè)功能更強(qiáng)大的 CountUp 組件,它不僅支持 vue-countup-v3 的全部特性,還額外提供了 pause、resume、reset 等命令式控制方法,感興趣的小伙伴可以了解下
    2026-04-04
  • 利用Vue3+ElementUI樹形菜單實(shí)現(xiàn)層次化用戶界面

    利用Vue3+ElementUI樹形菜單實(shí)現(xiàn)層次化用戶界面

    ElementUI是一個(gè)超棒的UI框架,它基于Vue.js提供了豐富的組件和樣式,可以幫你快速構(gòu)建出美觀實(shí)用的登陸頁(yè)面,這篇文章主要介紹了利用Vue3+ElementUI樹形菜單實(shí)現(xiàn)層次化用戶界面的相關(guān)資料,需要的朋友可以參考下
    2026-04-04
  • 從0到1搭建element后臺(tái)框架優(yōu)化篇(打包優(yōu)化)

    從0到1搭建element后臺(tái)框架優(yōu)化篇(打包優(yōu)化)

    這篇文章主要介紹了從0到1搭建element后臺(tái)框架優(yōu)化篇(打包優(yōu)化),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-05-05
  • Vue中vue-router路由使用示例詳解

    Vue中vue-router路由使用示例詳解

    Vue Router是Vue提供的路由管理器,將組件與路由一一對(duì)應(yīng)起來,這種對(duì)應(yīng)關(guān)系就路由,這篇文章主要介紹了Vue中vue-router路由使用,需要的朋友可以參考下
    2024-06-06
  • vue-路由精講 二級(jí)路由和三級(jí)路由的作用

    vue-路由精講 二級(jí)路由和三級(jí)路由的作用

    這篇文章主要介紹了vue-路由精講 二級(jí)路由和三級(jí)路由的作用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • vue組件的路由高亮問題解決方法

    vue組件的路由高亮問題解決方法

    這篇文章主要給大家介紹了關(guān)于vue組件的路由高亮問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • 在Vue中實(shí)現(xiàn)不刷新的iframe頁(yè)面的方案

    在Vue中實(shí)現(xiàn)不刷新的iframe頁(yè)面的方案

    在Vue項(xiàng)目中,我們可能會(huì)遇到這樣的需求:需要在應(yīng)用中嵌入iframe頁(yè)面,并且要求在路由切換的過程中,iframe的內(nèi)容不會(huì)被刷新,本文將介紹如何解決這個(gè)問題,并給出具體的實(shí)現(xiàn)方案,需要的朋友可以參考下
    2025-01-01
  • Vue利用mockjs編寫假數(shù)據(jù)并應(yīng)用的問題記錄

    Vue利用mockjs編寫假數(shù)據(jù)并應(yīng)用的問題記錄

    這篇文章主要介紹了Vue利用mockjs編寫假數(shù)據(jù)并應(yīng)用,本文通過實(shí)例代碼給大家詳細(xì)講解,對(duì)Vue?mockjs數(shù)據(jù)相關(guān)知識(shí)感興趣的朋友跟隨小編一起看看吧
    2022-12-12

最新評(píng)論

靖远县| 二手房| 桐城市| 蒙城县| 武清区| 孝义市| 唐海县| 榆树市| 凤凰县| 屯留县| 桂东县| 容城县| 定襄县| 乌兰浩特市| 松溪县| 南漳县| 忻城县| 江城| 金门县| 安义县| 永嘉县| 通州市| 鹤庆县| 新蔡县| 固阳县| 青岛市| 麻江县| 临湘市| 简阳市| 平阴县| 韶山市| 绥德县| 靖远县| 阿克陶县| 镇原县| 大厂| 包头市| 正安县| 高台县| 长寿区| 南召县|