Vue 中使用 Echarts 实现项目进度甘特图
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. 效果展示
附加效果
说明:
- 附加效果都是在简易版的基础上改进完成的。
- 具体修改位置需看代码前的
+
、-
号标识符。+
为新增的代码,-
为删除的代码。
效果一:各柱子指定不同颜色
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 实现项目进度甘特图相关推荐
- vue中使用Echarts绘制K线图
一.需求问题 在开发项目中,我们可能会遇到这样的需求.在vue中使用Echarts绘制K线图,进行数据分析.下面是一个简单的K线图绘制,数据是伪造的,虽然不多,但是能够实现大致的K线图效果. 二.需求 ...
- vue中使用echarts做一个雷达图
在vue中使用echarts做一个雷达图 效果如图 首先 1.安装echarts npm install echarts -S 2.使用 全局使用 在main.js中 // 引入echarts imp ...
- 使用 Echarts 实现项目进度甘特图
Echarts 功能十分强大,可以实现多种图表效果,下面简单介绍下最近使用 Eharts 实现的一个项目进度甘特图. 下面是实现的效果: 目录 一.概览 Echarts 基本内容 1.官网文档 2.查 ...
- vue中使用echarts绘柱形图+折线图
一.完成后效果图 二..vue文件完整代码 <template><!-- 柱形图+折线图多个展示 --><divid="myMaxbar":style ...
- vue 中使用echarts 画对比折线图
第一步:npm install echarts -S 安装 第二步:在main.js 全局引入 import echarts from 'echarts' Vue.prototype.$echarts ...
- 在vue中,Echarts雷达图中indicator的点击事件,不能改变data中的值的解决方法
在vue中,Echarts雷达图中indicator的点击事件,不能改变data中的值的解决方法 参考文章: (1)在vue中,Echarts雷达图中indicator的点击事件,不能改变data中的 ...
- Vue中引入echarts的步骤,折线图、柱状图、饼图的常用配置项
vue中引入echarts 一.安装echarts 二.引入echarts 1.全局引入 2.局部引入 三.vue中使用echarts 1.准备好函数 2.准备一个容器来放echarts 3.初始化容 ...
- echart高级使用_Vue:在Vue中使用echarts
前言 公司的项目中需要对数据做可视化处理,高级点的D3.js目前还没接触到,因此选用了大众化的Echarts, 在vue的生态系统中已经有实现好的vue-echarts,但是使用现成的就意味着必须使用 ...
- vue中基于echarts和基于高德地图的两种地图下钻与上浮方式
** vue中基于echarts和基于高德地图的两种地图下钻与上浮方式 ** 基于echarts的地图下钻与上浮(浙江省为例) 第一步:在<template>中构建承载echarts的do ...
最新文章
- FLV播放器 源码二例
- C++ new delete(二)
- Teleport 开源堡垒机的使用
- Delphi下DLL调用以及共享数据库连接
- pytorch得到中间层输出
- Python使用装饰器捕获异常,并写入日志,不中断进程
- (193)FPGA上电后IO的默认状态(Vivado软件默认为z)
- visualize python_安利一个Python大数据分析神器!
- Linux基本命令学习笔记
- 基于Vue和Spring Boot的在线视频播放系统 (模仿咪咕视频)
- 如何将照片中的文字转变成可编辑的文章(如何将书上的文字转变为可编辑的文字)
- html毕业答辩ppt,毕业论文答辩ppt(要求和制作技巧)
- push declined due to email privacy restrictions (GH007 error code) 解决方法
- 怎样取消手机QQ浏览器自动推送新闻广告
- Android 应用程序无响应(ANR)报错原因
- 计算机无法连上网怎么办,电脑显示已连接上但是无法上网怎么办
- 【华为OD机试模拟题】用 C++ 实现 - 预订酒店(2023.Q1)
- 网上商城SSH三者间的牵线
- 实战游戏项目管理1-规划篇
- 如何寻找省级软件产业主管部门认可的软件检测机构出具报告
热门文章
- java ajax 登陆验证_AJAX+JAVA用户登陆注册验证
- kubectl查看node状态_全栈之路:使用pm2自动化部署node项目
- 【可视化】表格的设计
- .俞敏洪+马云+牛根生+史玉柱经典语录
- 决策树 结构_「神经网络」能否代替「决策树算法」?
- mc服务器切换模式显示英文字母,MC820高级设置说明.doc
- soap linux php 拓展,linux carry php Soap 扩展
- 关于The connected J-Link is defective,Proper operation cannot be guaranteed.....
- 数字图像处理_冈萨雷斯_一些重要的标准数组
- k线符号图解大全_如何股票开户,麻烦朋友们介绍一个好点的证券公司?k线组合108式图解...