Vue 中使用 Echarts 实现项目进度甘特图

参考:echarts实现甘特图(项目进度/任务进度)

简易版

1. 项目中安装 echarts

npm i echarts

2. 实现甘特图

<template><div id="app"><!-- Echarts 图表 --><div ref="progressChart" class="progressChart"></div></div>
</template><script>
import * as echarts from 'echarts'
export default {name: 'App',mounted() {this.initChart()},methods: {/* 初始化图表 */initChart() {const progressChart = echarts.init(this.$refs.progressChart)const option = {// 鼠标移入提示工具tooltip: {trigger: 'axis',formatter(params) {if (params[1].data && params[0].data) {return `<div>开始时间:${params[1].data}</div>` + `<div>结束时间:${params[0].data}</div>`} else {return ''}},axisPointer: {type: 'shadow'}},grid: {containLabel: true,show: false,right: 80,left: 40,bottom: 40,top: 20,backgroundColor: '#fff'},legend: {// 图例组件data: ['持续时间'],align: 'auto',top: 'bottom'},xAxis: {type: 'time',position: 'top', // x 轴位置axisTick: {// 隐藏刻度show: false},axisLine: {// 隐藏轴线show: false},splitLine: {// 显示网格线show: true}},yAxis: {inverse: true, // y 轴数据翻转,该操作是为了保证项目一放在最上面,项目七在最下面axisTick: {// 隐藏刻度show: false},axisLine: {// 隐藏轴线show: false},data: ['项目一', '项目二', '项目三', '项目四', '项目五', '项目六', '项目七']},series: [{name: '持续时间',type: 'bar',stack: 'duration',itemStyle: {color: '#007acc',borderColor: '#fff',borderWidth: 1},zlevel: -1,data: ['2021-01-31', '2021-02-25', '2021-03-25', '2021-04-01', '2021-04-10', '2021-05-25', '2021-07-25'] // 结束时间},{name: '持续时间',type: 'bar',stack: 'duration', // 堆叠标识符,同个类目轴上系列配置相同的 stack 值可以堆叠放置itemStyle: {color: '#fff'},zlevel: -1, // zlevel 大的 Canvas 会放在 zlevel 小的 Canvas 的上面z: 9, // z值小的图形会被z值大的图形覆盖,z相比zlevel优先级更低,而且不会创建新的 Canvasdata: ['2021-01-01', '2021-01-31', '2021-02-25', '2021-03-25', '2021-04-01', '2021-04-10', '2021-05-25'] // 开始时间}]}progressChart.setOption(option)// 浏览器窗口大小变化,图表大小自适应window.addEventListener('resize', () => {progressChart.resize()})}}
}
</script><style scoped>
#app {display: flex;justify-content: center;align-items: center;height: 100vh;
}
.progressChart {width: 60%;height: 420px;border: 1px solid #aaa;
}
</style>

3. 效果展示


附加效果

说明:

  1. 附加效果都是在简易版的基础上改进完成的。
  2. 具体修改位置需看代码前的 +- 号标识符。+ 为新增的代码,- 为删除的代码。

效果一:各柱子指定不同颜色

      const option = {legend: {-          data: ['持续时间'],
+          data: [
+            {+            name: '持续时间',
+              itemStyle: {+               color: '#000'
+            }
+        }
+        ], // 给 legend 图例自定义颜色align: 'auto',top: 'bottom'},
+      color: ['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'purple'], // 自定义调色盘的颜色series: [{name: '持续时间',type: 'bar',stack: 'duration',
+           colorBy: 'data', // 让数据项 data 每一项的颜色根据调色盘中的颜色按顺序进行分配itemStyle: {-           //  color: '#007acc', // 这一行固定的颜色值需要删除或注释borderColor: '#fff',borderWidth: 1},zlevel: -1,data: ['2021-01-31', '2021-02-25', '2021-03-25', '2021-04-01', '2021-04-10', '2021-05-25', '2021-07-25']}]}

效果展示

效果二:柱子右侧添加自定义文字

+      const startTimeData = ['2021-01-01', '2021-01-31', '2021-02-25', '2021-03-25', '2021-04-01', '2021-04-10', '2021-05-25']
+      const endTimeData = ['2021-01-31', '2021-02-25', '2021-03-25', '2021-04-01', '2021-04-10', '2021-05-25', '2021-07-25']const option = {grid: {containLabel: true,show: false,
-          right: 80,
+          right: 140, // 增加 grid 距离右侧的距离以显示完整文字信息left: 40,bottom: 40,top: 20,backgroundColor: '#fff'},series: [{// ...
+            label: {+              show: true,
+              position: 'right',
+              color: '#999',
+             formatter: params => {+               console.log(params.value)
+                const findIndex = endTimeData.findIndex(item => item === params.value)
+                const startTime = startTimeData[findIndex]
+                return `开始时间:${startTime}\n\n结束时间:${params.value}`
+              } // 格式化 label
+            },zlevel: -1,
-           data: ['2021-01-31', '2021-02-25', '2021-03-25', '2021-04-01', '2021-04-10', '2021-05-25', '2021-07-25'] // 结束时间
+           data: endTimeData // 结束时间},{// ...zlevel: -1, // zlevel 大的 Canvas 会放在 zlevel 小的 Canvas 的上面z: 9, // z值小的图形会被z值大的图形覆盖,z相比zlevel优先级更低,而且不会创建新的 Canvas
-           data: ['2021-01-01', '2021-01-31', '2021-02-25', '2021-03-25', '2021-04-01', '2021-04-10', '2021-05-25'] // 开始时间
+           data: startTimeData // 开始时间}]}

效果展示

Vue 中使用 Echarts 实现项目进度甘特图相关推荐

  1. vue中使用Echarts绘制K线图

    一.需求问题 在开发项目中,我们可能会遇到这样的需求.在vue中使用Echarts绘制K线图,进行数据分析.下面是一个简单的K线图绘制,数据是伪造的,虽然不多,但是能够实现大致的K线图效果. 二.需求 ...

  2. vue中使用echarts做一个雷达图

    在vue中使用echarts做一个雷达图 效果如图 首先 1.安装echarts npm install echarts -S 2.使用 全局使用 在main.js中 // 引入echarts imp ...

  3. 使用 Echarts 实现项目进度甘特图

    Echarts 功能十分强大,可以实现多种图表效果,下面简单介绍下最近使用 Eharts 实现的一个项目进度甘特图. 下面是实现的效果: 目录 一.概览 Echarts 基本内容 1.官网文档 2.查 ...

  4. vue中使用echarts绘柱形图+折线图

    一.完成后效果图 二..vue文件完整代码 <template><!-- 柱形图+折线图多个展示 --><divid="myMaxbar":style ...

  5. vue 中使用echarts 画对比折线图

    第一步:npm install echarts -S 安装 第二步:在main.js 全局引入 import echarts from 'echarts' Vue.prototype.$echarts ...

  6. 在vue中,Echarts雷达图中indicator的点击事件,不能改变data中的值的解决方法

    在vue中,Echarts雷达图中indicator的点击事件,不能改变data中的值的解决方法 参考文章: (1)在vue中,Echarts雷达图中indicator的点击事件,不能改变data中的 ...

  7. Vue中引入echarts的步骤,折线图、柱状图、饼图的常用配置项

    vue中引入echarts 一.安装echarts 二.引入echarts 1.全局引入 2.局部引入 三.vue中使用echarts 1.准备好函数 2.准备一个容器来放echarts 3.初始化容 ...

  8. echart高级使用_Vue:在Vue中使用echarts

    前言 公司的项目中需要对数据做可视化处理,高级点的D3.js目前还没接触到,因此选用了大众化的Echarts, 在vue的生态系统中已经有实现好的vue-echarts,但是使用现成的就意味着必须使用 ...

  9. vue中基于echarts和基于高德地图的两种地图下钻与上浮方式

    ** vue中基于echarts和基于高德地图的两种地图下钻与上浮方式 ** 基于echarts的地图下钻与上浮(浙江省为例) 第一步:在<template>中构建承载echarts的do ...

最新文章

  1. FLV播放器 源码二例
  2. C++ new delete(二)
  3. Teleport 开源堡垒机的使用
  4. Delphi下DLL调用以及共享数据库连接
  5. pytorch得到中间层输出
  6. Python使用装饰器捕获异常,并写入日志,不中断进程
  7. (193)FPGA上电后IO的默认状态(Vivado软件默认为z)
  8. visualize python_安利一个Python大数据分析神器!
  9. Linux基本命令学习笔记
  10. 基于Vue和Spring Boot的在线视频播放系统 (模仿咪咕视频)
  11. 如何将照片中的文字转变成可编辑的文章(如何将书上的文字转变为可编辑的文字)
  12. html毕业答辩ppt,毕业论文答辩ppt(要求和制作技巧)
  13. push declined due to email privacy restrictions (GH007 error code) 解决方法
  14. 怎样取消手机QQ浏览器自动推送新闻广告
  15. Android 应用程序无响应(ANR)报错原因
  16. 计算机无法连上网怎么办,电脑显示已连接上但是无法上网怎么办
  17. 【华为OD机试模拟题】用 C++ 实现 - 预订酒店(2023.Q1)
  18. 网上商城SSH三者间的牵线
  19. 实战游戏项目管理1-规划篇
  20. 如何寻找省级软件产业主管部门认可的软件检测机构出具报告

热门文章

  1. java ajax 登陆验证_AJAX+JAVA用户登陆注册验证
  2. kubectl查看node状态_全栈之路:使用pm2自动化部署node项目
  3. 【可视化】表格的设计
  4. .俞敏洪+马云+牛根生+史玉柱经典语录
  5. 决策树 结构_「神经网络」能否代替「决策树算法」?
  6. mc服务器切换模式显示英文字母,MC820高级设置说明.doc
  7. soap linux php 拓展,linux carry php Soap 扩展
  8. 关于The connected J-Link is defective,Proper operation cannot be guaranteed.....
  9. 数字图像处理_冈萨雷斯_一些重要的标准数组
  10. k线符号图解大全_如何股票开户,麻烦朋友们介绍一个好点的证券公司?k线组合108式图解...