博主本来就想简单地找一下代码,画一幅甘特图,结果百度之后发现甘特图的代码基本都不是用matplotlib库,但是像柱状图等统计图通常都是用这个库进行绘制的,所以博主就花了一些时间,自己敲了一份代码,简单地绘制了一份博主想要的甘特图,下边博主就来介绍分享一下。

何为甘特图?

甘特图(Gantt chart)又称为横道图、条状图(Bar chart)。其通过条状图来显示项目,进度,和其他时间相关的系统进展的内在关系随着时间进展的情况。以提出者亨利·劳伦斯·甘特(Henry Laurence Gantt)先生的名字命名。

甘特图以图示通过活动列表和时间刻度表示出特定项目的顺序与持续时间。一条线条图,横轴表示时间,纵轴表示项目,线条表示期间计划和实际完成情况。直观表明计划何时进行,进展与要求的对比。便于管理者弄清项目的剩余任务,评估工作进度。
甘特图是以作业排序为目的,将活动与时间联系起来的最早尝试的工具之一,帮助企业描述工作中心、超时工作等资源的使用。
甘特图包含以下三个含义:
1、以图形或表格的形式显示活动;
2、通用的显示进度的方法;
3、构造时含日历天和持续时间,不将周末节假算在进度内。
简单、醒目、便于编制,在管理中广泛应用。
甘特图按内容不同,分为计划图表、负荷图表、机器闲置图表、人员闲置图表和进度表五种形式。
 
下面先看一下最终的效果图吧
 
甘特图(灰度版)
甘特图(RGBA版)
 
灰度版源码如下:
def getGant():
timelist = [['2020-6-8','2020-6-14'],['2020-6-15','2020-6-21'],['2020-6-22','2020-7-4'],['2020-7-5','2020-7-10'],['2020-7-11','2020-7-17']]
states=['环境配置','设计阶段','研发阶段','测试阶段','成果验收']
xlabels=['2020-6-8','2020-6-15','2020-6-21','2020-7-5','2020-7-11','2020-7-17']
ylabels=['第一阶段','第二阶段','第三阶段','第四阶段','第五阶段']
xtimes=[0]
ystates=[0]
location=0
plt.figure()
plt.figure(num=3, figsize=(9, 2)) # figsize的设置长和宽 for i in range(len(timelist)):
Start=timelist[i][0]
Finish=timelist[i][1]
startTime = datetime.datetime.strptime(Start, "%Y-%m-%d")
finishTime = datetime.datetime.strptime(Finish, "%Y-%m-%d")
day = (finishTime-startTime).days
# plt.bar(40,10,label=xlabels[i],color='g')
plt.axhline(y=i+0.5, color='k', linestyle='-',alpha= 0.5,linewidth=0.8)
plt.barh(i,day,0.5,location,alpha=(5+i)/10,color = 'g', align="center") #y值,宽度,高度,起始x
plt.text(location+1,i+0.52,states[i], size = 10, alpha = 1)
# plt.barh(y,width,1,location,facecolor='tan',edgecolor='r',alpha=0.6,tick_label=label,hatch=".")
plt.xlabel(u"时间")
plt.ylabel(u"软件工程阶段")
location+=day
xtimes.append(location)
ystates.append(i+1) # plt.legend()#若必要可显示图例
plt.xticks(xtimes, xlabels, rotation='horizontal')
plt.yticks(ystates, ylabels, rotation='horizontal')
plt.title(u'甘特图')
# plt.grid(True)
plt.savefig('甘特图.png', dpi=300, format='png',bbox_inches="tight") #bbox_inches="tight"解决X轴时间两个字不被保存的问题
plt.show()#若将show函数放在savefig之前,则容易造成保存的图片为空白,因为show函数数重新定义一个画板

在代码编写过程中还是遇到了不少的问题的,比如中文编码问题、图片保存不全问题等。

大家可以关注微信公众号,后台回复甘特图,获取源码。

扫码关注公众号

python的matplotlib.pyplot绘制甘特图的更多相关文章

  1. python中matplotlib所绘制的图包含了很多的对象

    上图中的top=‘off’意思是说顶部的grid lines 看不见. 去除frame,意思就是将这个矩形给去除掉,spine意思是脊柱 bars = plt.bar(pos, popularity, ...

  2. Python使用Plotly绘图工具,绘制甘特图

    今天来讲一下如何使用Python 的绘图工具Plotly来绘制甘特图的方法 甘特图大家应该了解熟悉,就是通过条形来显示项目的进度.时间安排等相关情况的. 我们今天来学习一下,如何使用ployly来绘制 ...

  3. 利用pandas读取Excel表格,用matplotlib.pyplot绘制直方图、折线图、饼图

    利用pandas读取Excel表格,用matplotlib.pyplot绘制直方图.折线图.饼图 数据: 折线图代码: import  pandas  as pdimport  matplotlib. ...

  4. 使用Excel 2007绘制甘特图

    本文将教大家如何使用Excel 2007制作甘特图.Excel并未提供甘特图类型,但还是可以绘制甘特图的,方法就是通过对堆积条形图类型进行自定义,使之显示任务.任务工期和层次结构. 下面的过程可帮助创 ...

  5. 如何使用Excel绘制甘特图

    摘自:http://www.mifengtd.cn/articles/how-to-create-a-gantt-chart-in-excel.html 再造<优秀的时间管理和项目管理工具> ...

  6. 【python】pandas & matplotlib 数据处理 绘制曲面图

    Python matplotlib模块,是扩展的MATLAB的一个绘图工具库,它可以绘制各种图形 建议安装 Anaconda后使用 ,集成了很多第三库,基本满足大家的需求,下载地址,对应选择pytho ...

  7. Python使用matplotlib模块绘制多条折线图、散点图

    用matplotlib模块 #!usr/bin/env python #encoding:utf-8 ''' __Author__:沂水寒城 功能:折线图.散点图测试 ''' import rando ...

  8. python 运用numpy库与matplotlib库绘制数据图

    代码一 import numpy as np import matplotlib.pyplot as plt x=np.linspace(0,6,100) y=np.cos(2*np.pi*x)*np ...

  9. Python数据分析-Matplotlib图标绘制

    Matplotlib介绍 Matplotlib是一个强大的Python绘图和数据可视化的工具包. Matplotlib的主要功能 Matplotlib是python中的一个包,主要用于绘制2D图形(当 ...

随机推荐

  1. UIView的常见方法

    - (void)addSubview:(UIView *)view; 添加一个子控件view - (void)removeFromSuperview; 将自己从父控件中移除 - (UIView *)v ...

  2. Java开发调试技巧及Eclipse快捷键使用方法

    1. 快捷键 syso 通过打印输出来调试,println可接受object型的参数,能输出任何类型 Syso输出的是黑色字体,代表的是Debug的信息 Syse,输出的是红色字体,代表错误的输出信息 ...

  3. Docker镜像实战(ssh、systemctl、nginx、tomcat、mysql)

    Docker镜像实战 1.构建ssh镜像 2.构建systemctl 镜像 3.构建nginx镜像 4.构建tomcat镜像 5.构建mysql镜像 1.构建ssh镜像: 创建镜像目录 mkdir / ...

  4. 经常使用的系统类Math、Arrays、System、BigInteger和BigDecimal以及日期类,时间戳

    一.Math 常用类: //看看Math常用的方法(静态方法)//1.abs绝对值int abs = Math . abs(-9);System. out . printLn(abs);//9//2. ...

  5. Note -「Mobius 反演」光速入门

    目录 Preface 数论函数 积性函数 Dirichlet 卷积 Dirichlet 卷积中的特殊函数 Mobius 函数 & Mobius 反演 Mobius 函数 Mobius 反演 基 ...

  6. Solution -「CF 1132G」Greedy Subsequences

    \(\mathcal{Description}\)   Link.   定义 \(\{a\}\) 最长贪心严格上升子序列(LGIS) \(\{b\}\) 为满足以下两点的最长序列: \(\{b\}\) ...

  7. .NET官方封装的Win32API类库

    大部分朋友在使用C#.NET调用Win32API时都不清楚API函数的声明,要么就是抄网上的代码,但是总会遇到各种各样奇奇怪怪难以解决的问题,打算自己封装又发现工作量实在太大. 其实完全没有必要自己动 ...

  8. 我们一起来学Shell - shell的并发及并发控制

    文章目录 bash的并发 未使用并发的脚本 简单修改 使用wait命令 控制并发进程的数量 文件描述符 查看当前进程打开的文件 自定义当前进程用描述符号操作文件 管道 我们一起来学Shell - 初识 ...

  9. 聊聊你对AQS的理解

    场景引入 面试官上来就一句,谈谈你对AQS的理解,大家心里可能收到了1W点伤害,AQS是什么,可能连全称都不知道,所以下面让我们聊聊AQS. 以ReentrantLock来介绍一下AQS 在java中 ...

  10. 编译原理 | 构造LR(1)自动机的注意事项

    在画图之前,有时候要先对产生式集合进行某些操作. 下图所示的情况,不需要补一条拓广产生式,因为开始符Z没有出现在某条产生式的右侧. 即,如果开始符出现在某条产生式的右部,需要增加拓广产生式.