我需要生成甘特图的python代码,并且这个甘特图是应用于车间调度的
时间: 2024-05-16 16:18:15 浏览: 165
您可以使用Python中的Gantt Chart库来生成甘特图。以下是一个简单的示例代码,您可以根据您的需求进行修改:
```python
import matplotlib.pyplot as plt
import matplotlib.font_manager as font_manager
from datetime import datetime, timedelta
# 设置字体,避免中文显示乱码
font = font_manager.FontProperties(fname='C:\Windows\Fonts\simsun.ttc', size=12)
# 创建一个甘特图对象
fig, ax = plt.subplots()
# 设置y轴的高度
ax.set_ylim(0, 50)
# 设置x轴的范围为一周
start_date = datetime(2021, 11, 1)
end_date = datetime(2021, 11, 7)
ax.set_xlim(start_date, end_date)
# 设置x轴的刻度为天
ax.xaxis.set_major_locator(plt.FixedLocator([start_date + timedelta(days=i) for i in range(7)]))
ax.xaxis.set_major_formatter(plt.FuncFormatter(lambda x, _: x.strftime('%m-%d')))
# 添加车间调度任务
tasks = [
(1, '任务1', datetime(2021, 11, 2), datetime(2021, 11, 4)),
(2, '任务2', datetime(2021, 11, 3), datetime(2021, 11, 5)),
(3, '任务3', datetime(2021, 11, 1), datetime(2021, 11, 3)),
(4, '任务4', datetime(2021, 11, 4), datetime(2021, 11, 6)),
(5, '任务5', datetime(2021, 11, 6), datetime(2021, 11, 7)),
]
# 绘制甘特图
for i, task in enumerate(tasks):
start = task[2]
end = task[3]
ax.broken_barh([(start, end - start)], (10*i+5, 9), facecolors=('tab:blue'))
# 在甘特图上添加任务名称
ax.text(start + timedelta(hours=1), 10*i+10, task[1], fontproperties=font)
# 设置图表标题和轴标签
ax.set_title('车间调度甘特图', fontproperties=font)
ax.set_xlabel('日期', fontproperties=font)
ax.set_ylabel('任务', fontproperties=font)
# 显示图表
plt.show()
```
您可以根据自己的需求修改任务、时间、颜色等参数来生成您想要的甘特图。
阅读全文