大家好,我是一名Python数据分析师,我想把自己转行成功之路上的经验分享给大家,由此就有了我的人工智能四部曲:《15天学会Python编程》、《每天10分钟,用Python学数据分析》、《Python数据可视化实战》、《33天搞定机器学习》。
甘特图
甘特图(Gantt chart)又称为横道图、条状图(Bar chart)。以提出者亨利·劳伦斯·甘特(Henry Laurence Gantt)先生的名字命名。 甘特图以图示通过活动列表和时间刻度表示出特定项目的顺序与持续时间。一条线条图,横轴表示时间,纵轴表示项目,线条表示期间计划和实际完成情况。直观表明计划何时进行,进展与要求的对比。便于管理者弄清项目的剩余任务,评估工作进度。
甘特图的特点是突出了生产管理中最重要的因素— 时间,它的作用表现在三个方面: 1、计划产量与计划时间的对应关系。 2、每日的实际产量与预定计划产量的对比关系。 3、一定时间内实际累计产量与同时期计划累计产量的对比关系
用Matplotlib画甘特图import matplotlib.pyplot as plt
import numpy as np
ax=plt.gca()
[ax.spines[i].set_visible(False) for i in ["top","right"]]
def gatt(m,t):
"""甘特图
m机器集
t时间集
"""
for j in range(len(m)):#工序j
i=m[j]-1#机器编号i
if j==0:
plt.barh(i,t[j])
plt.text(np.sum(t[:j+1])/8,i,'J%sT%s'%((j+1),t[j]),color="white",size=8)
else:
plt.barh(i,t[j],left=(np.sum(t[:j])))
plt.text(np.sum(t[:j])+t[j]/8,i,'J%sT%s'%((j+1),t[j]),color="white",size=8)
if __name__=="__main__":
"""测试代码"""
m=np.random.randint(1,7,35)
t=np.random.randint(15,25,35)
gatt(m,t)
plt.yticks(np.arange(max(m)),np.arange(1,max(m)+1))
plt.show()
这里讲讲plt.barh这个函数
barh()表示绘制水平方向的条形图,基本使用方法为:
barh(y, width, left=0, height=0.8, edgecolor)
各个参数解析如下:
- y:在y轴上的位置
- width:条形图的宽度(从左到右的哦)
- left:开始绘制的x坐标
- edgecolor:图形边缘的颜色
用Plotly绘图工具,绘制甘特图
绘制甘特图的函数为Plotly.figure_factoryz中create_gantt方法 通过参数事件Task,开始Start,结束Finish的时间的数据来绘制甘特图
iimport plotly as py
import plotly.figure_factory as ff
pyplt = py.offline.plot
df = [dict(Task="项目1", Start='2019-01-01', Finish='2019-02-28', Complete=10),
dict(Task="项目2", Start='2018-12-05', Finish='2019-04-15', Complete=10),
dict(Task="项目3", Start='2019-02-20', Finish='2019-05-30', Complete=50),
dict(Task="项目4", Start='2019-03-20', Finish='2019-06-30', Complete=50),
dict(Task="项目5", Start='2019-01-12', Finish='2019-04-28', Complete=100),
{!-- PGC_COLUMN --} dict(Task="项目6", Start='2019-03-07', Finish='2019-08-21', Complete=100)]
fig = ff.create_gantt(df, index_col='Complete', show_colorbar=True)
pyplt(fig, filename='tmp/1.html')
可以看到右边出现了索引条,每项工作后的complete属性即为其对应的索引值,在create_gamtt函数中
设置,index_col = ‘Complete’,则会出现相同条形对应相同颜色的,可以根据颜色来盘点任务大概对应的索引值是多少。
这个值得范围0-100,用来反映工作完成的进度,100表示全部完成,0表示没有进展。