这是一个python类,用于使用svg创建甘特图。

python-gantt的Python项目详细描述


使用python甘特图可以轻松地从python中绘制甘特图。
输出格式为SVG。

安装

要求

此项目需要以下库:

附加要求

要使用org2gantt脚本,需要以下库:

安装

python setup.py install

示例

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import datetime
import gantt

# Change font default
gantt.define_font_attributes(fill='black', stroke='black', stroke_width=0, font_family="Verdana")

# Add vacations for everyone
gantt.add_vacations(datetime.date(2014, 12, 25))
gantt.add_vacations(datetime.date(2015, 1, 1))
gantt.add_vacations(datetime.date(2015, 1, 13))

# Create two resources
rANO = gantt.Resource('ANO')
rJLS = gantt.Resource('JLS')

# Add vacations for one lucky resource
rANO.add_vacations(
    dfrom=datetime.date(2014, 12, 29),
    dto=datetime.date(2015, 1, 4)
    )
rANO.add_vacations(
    dfrom=datetime.date(2015, 1, 6),
    dto=datetime.date(2015, 1, 8)
    )

# Test if this resource is  avalaible for some dates
print(rANO.is_available(datetime.date(2015, 1, 5)))
print(rANO.is_available(datetime.date(2015, 1, 8)))
print(rANO.is_available(datetime.date(2015, 1, 6)))
print(rANO.is_available(datetime.date(2015, 1, 2)))
print(rANO.is_available(datetime.date(2015, 1, 1)))


# Create some tasks
t1 = gantt.Task(name='tache1', start=datetime.date(2014, 12, 25), duration=4, percent_done=44, resources=[rANO], color="#FF8080")
t2 = gantt.Task(name='tache2', start=datetime.date(2014, 12, 28), duration=6, resources=[rJLS])
t7 = gantt.Task(name='tache7', start=datetime.date(2014, 12, 28), duration=5, percent_done=50)
t3 = gantt.Task(name='tache3', start=datetime.date(2014, 12, 25), duration=4, depends_of=[t1, t7, t2], resources=[rJLS])
t4 = gantt.Task(name='tache4', start=datetime.date(2015, 01, 01), duration=4, depends_of=t1, resources=[rJLS])
t5 = gantt.Task(name='tache5', start=datetime.date(2014, 12, 23), duration=3)
t6 = gantt.Task(name='tache6', start=datetime.date(2014, 12, 25), duration=4, depends_of=t7, resources=[rANO])
t8 = gantt.Task(name='tache8', start=datetime.date(2014, 12, 25), duration=4, depends_of=t7, resources=[rANO, rJLS])


# Create a project
p1 = gantt.Project(name='Projet 1')

# Add tasks to this project
p1.add_task(t1)
p1.add_task(t7)
p1.add_task(t2)
p1.add_task(t3)
p1.add_task(t5)
p1.add_task(t8)



# Create another project
p2 = gantt.Project(name='Projet 2', color='#FFFF40')

# Add tasks to this project
p2.add_task(t2)
p2.add_task(t4)


# Create another project
p = gantt.Project(name='Gantt')
# wich contains the first two projects
# and a single task
p.add_task(p1)
p.add_task(p2)
p.add_task(t6)


# Test cases for milestones
# Create another project
ptcm = gantt.Project(name='Test case for milestones')

tcm11 = gantt.Task(name='tcm11', start=datetime.date(2014, 12, 25), duration=4)
tcm12 = gantt.Task(name='tcm12', start=datetime.date(2014, 12, 26), duration=5)
ms1 = gantt.Milestone(name=' ', depends_of=[tcm11, tcm12])
tcm21 = gantt.Task(name='tcm21', start=datetime.date(2014, 12, 30), duration=4, depends_of=[ms1])
tcm22 = gantt.Task(name='tcm22', start=datetime.date(2014, 12, 30), duration=6, depends_of=[ms1])
ms2 = gantt.Milestone(name='MS2', depends_of=[ms1, tcm21, tcm22])
tcm31 = gantt.Task(name='tcm31', start=datetime.date(2014, 12, 30), duration=6, depends_of=[ms2])
ms3 = gantt.Milestone(name='MS3', depends_of=[ms1])


ptcm.add_task(tcm11)
ptcm.add_task(tcm12)
ptcm.add_task(ms1)
ptcm.add_task(tcm21)
ptcm.add_task(tcm22)
ptcm.add_task(ms2)
ptcm.add_task(tcm31)
ptcm.add_task(ms3)


p.add_task(ptcm)


##########################$ MAKE DRAW ###############
p.make_svg_for_tasks(filename='test_full.svg', today=datetime.date(2014, 12, 31), start=datetime.date(2014,8, 22), end=datetime.date(2015, 01, 14))
p.make_svg_for_tasks(filename='test_full2.svg', today=datetime.date(2014, 12, 31))
p.make_svg_for_tasks(filename='test.svg', today=datetime.date(2014, 12, 31), start=datetime.date(2015, 01, 3), end=datetime.date(2015, 01, 06))
p1.make_svg_for_tasks(filename='test_p1.svg', today=datetime.date(2014, 12, 31))
p2.make_svg_for_tasks(filename='test_p2.svg', today=datetime.date(2014, 12, 31))
p.make_svg_for_resources(filename='test_resources.svg', today=datetime.date(2014, 12, 31), resources=[rANO, rJLS])
p.make_svg_for_tasks(filename='test_weekly.svg', today=datetime.date(2014, 12, 31), scale=gantt.DRAW_WITH_WEEKLY_SCALE)
##########################$ /MAKE DRAW ###############

许可证

GPL v3或任何更高版本

作者

亚历山大诺曼(norman at xael.org)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为新对象()保留了多少内存空间;   keytool错误:java。木卫一。IOException:安卓密钥库被篡改或密码不正确   java Recyclerview不可点击安卓 studio(可能是我的代码错误?)   爪哇警报每天早上5点   安卓为java循环中的json对象添加值   java NetBeans“与编辑器链接”功能   SQL Server与Java EE演练   如何在Java应用程序中嵌入迷你控制台?   java Pig UDF,在批处理过程中删除分布式缓存中的文件   javascript使用GWT关闭网络摄像头和灯光   将Eclipse开普勒SR1升级到SR2时发生java错误?   java使用HashMap计算数组中某些整数的数量   java如何保护Android代码不受反向工程的影响?   java为什么添加这个防御副本可以避免死锁?   java我无法上传文件,需要哪些jar文件?   在java中,同一个程序可以作为服务器运行,也可以作为其他程序的客户端运行?   java从内部记录访问非静态外部上下文   java如何在使用Hibernate时打印带有参数值的查询字符串   Java向量类未更新