python动态横道图_Python数据可视化:甘特图画法

大家好,我是一名Python数据分析师,我想把自己转行成功之路上的经验分享给大家,由此就有了我的人工智能四部曲:《15天学会Python编程》、《每天10分钟,用Python学数据分析》、《Python数据可视化实战》、《33天搞定机器学习》。

甘特图

甘特图(Gantt chart)又称为横道图、条状图(Bar chart)。以提出者亨利·劳伦斯·甘特(Henry Laurence Gantt)先生的名字命名。 甘特图以图示通过活动列表和时间刻度表示出特定项目的顺序与持续时间。一条线条图,横轴表示时间,纵轴表示项目,线条表示期间计划和实际完成情况。直观表明计划何时进行,进展与要求的对比。便于管理者弄清项目的剩余任务,评估工作进度。

?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0617%2F63e9d2dcj00qc1gyn000kc000hs007yc.jpg&thumbnail=650x2147483647&quality=80&type=jpg

甘特图的特点是突出了生产管理中最重要的因素— 时间,它的作用表现在三个方面: 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:图形边缘的颜色

?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0617%2Fc9a41b6fj00qc1gyn000oc000hs00dwc.jpg&thumbnail=650x2147483647&quality=80&type=jpg

用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')

?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0617%2Fb9805efdj00qc1gyn000fc000hs009xc.jpg&thumbnail=650x2147483647&quality=80&type=jpg

可以看到右边出现了索引条,每项工作后的complete属性即为其对应的索引值,在create_gamtt函数中

设置,index_col = ‘Complete’,则会出现相同条形对应相同颜色的,可以根据颜色来盘点任务大概对应的索引值是多少。

这个值得范围0-100,用来反映工作完成的进度,100表示全部完成,0表示没有进展。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值