使用Python绘制甘特图

使用Python绘制甘特图

  • 甘特图
  • 效果
  • 代码

甘特图

甘特图是一种项目管理工具,用于展示项目进度和任务安排。它通过条状图形表示各任务的起止时间,便于直观地查看项目的各个任务的进度和相互关系。

效果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dAs7ifp4-1720143854496)(https://i-blog.csdnimg.cn/direct/b98e07ed3f0b49c998dfd1f86a2ab130.png)

代码

python 复制代码
import matplotlib.pyplot as plt
import pandas as pd
import matplotlib.dates as mdates

# 创建示例任务数据
data = {
    'Task': ['Task 1', 'Task 2', 'Task 3', 'Task 4'],
    'Start': ['2023-07-01', '2023-07-05', '2023-07-10', '2023-07-15'],
    'End': ['2023-07-10', '2023-07-15', '2023-07-20', '2023-07-25']
}

# 转换为DataFrame
df = pd.DataFrame(data)
df['Start'] = pd.to_datetime(df['Start'])
df['End'] = pd.to_datetime(df['End'])

# 绘制甘特图
fig, ax = plt.subplots(figsize=(10, 5))

# 将任务按结束时间排序,确保绘图时任务从上到下排列
df = df.sort_values(by='End')

# 绘制每个任务的条形
for i, task in enumerate(df.itertuples()):
    ax.barh(task.Task, (task.End - task.Start).days, left=task.Start)

# 设置x轴的日期格式
ax.xaxis.set_major_locator(mdates.DayLocator(interval=2))
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))

# 设置图表标题和标签
plt.title('Gantt Chart')
plt.xlabel('Date')
plt.ylabel('Task')

# 自动旋转日期标签
plt.xticks(rotation=45)

plt.tight_layout()
plt.show()
相关推荐
南极星1005几秒前
我的创作纪念日--128天
java·python·opencv·职场和发展
前端小菜袅几秒前
PC端原样显示移动端页面方案
开发语言·前端·javascript·postcss·px-to-viewport·移动端适配pc端
码界筑梦坊1 分钟前
327-基于Django的兰州空气质量大数据可视化分析系统
python·信息可视化·数据分析·django·毕业设计·数据可视化
Highcharts.js2 分钟前
如何使用Highcharts SVG渲染器?
开发语言·javascript·python·svg·highcharts·渲染器
郝学胜-神的一滴6 分钟前
超越Spring的Summer(一): PackageScanner 类实现原理详解
java·服务器·开发语言·后端·spring·软件构建
啊阿狸不会拉杆7 分钟前
《机器学习导论》第 7 章-聚类
数据结构·人工智能·python·算法·机器学习·数据挖掘·聚类
摇滚侠7 分钟前
Java,举例说明,函数式接口,函数式接口实现类,通过匿名内部类实现函数式接口,通过 Lambda 表达式实现函数式接口,演变的过程
java·开发语言·python
阿里嘎多学长9 分钟前
2026-02-03 GitHub 热点项目精选
开发语言·程序员·github·代码托管
Tony Bai10 分钟前
“Go 2,请不要发生!”:如果 Go 变成了“缝合怪”,你还会爱它吗?
开发语言·后端·golang
打工的小王11 分钟前
java并发编程(七)ReentrantReadWriteLock
java·开发语言