机器调度甘特图python
时间: 2025-01-02 19:33:50 浏览: 5
### 使用Python绘制机器调度甘特图
为了有效地创建机器调度甘特图,可以利用`matplotlib`库和`pandas`库。这两个库提供了强大的功能来处理数据并生成高质量的图表。
#### 推荐使用的库
- `matplotlib`: 这是一个广泛应用于科学计算中的绘图库,支持多种类型的图表制作,包括甘特图[^1]。
- `pandas`: 主要用来管理和操作结构化数据集,在准备输入到甘特图的数据时特别有用。
#### 示例代码
下面是一段简单的Python代码示例,展示了如何使用上述提到的两个库来构建一个基本的机器调度甘特图:
```python
import matplotlib.pyplot as plt
import pandas as pd
from datetime import datetime, timedelta
# 创建样本数据框
data = {
'Machine': ['M1', 'M2', 'M3'],
'Start Time': [
datetime(2023, 9, 1),
datetime(2023, 9, 2),
datetime(2023, 9, 3)],
'End Time': [
datetime(2023, 9, 2),
datetime(2023, 9, 4),
datetime(2023, 9, 5)]
}
df = pd.DataFrame(data)
fig, ax = plt.subplots()
for i in range(len(df)):
machine_name = df['Machine'][i]
start_time = df['Start Time'][i]
end_time = df['End Time'][i]
duration = (end_time - start_time).total_seconds() / (60 * 60 * 24) # 计算持续天数
bar_height = 0.8
y_position = i
ax.barh(y=y_position, width=duration, height=bar_height,
left=start_time, align='center',
edgecolor="black", color="blue",
alpha=0.7)
ax.text(start_time, y_position, f'{machine_name}', va='center')
ax.set_yticks(range(len(df)))
ax.set_yticklabels(df['Machine'])
plt.title('Machine Scheduling Gantt Chart')
plt.xlabel('Date')
plt.ylabel('Machine')
plt.grid(True)
plt.show()
```
这段程序首先定义了一个包含三台不同设备及其对应作业时间段的数据表;接着运用循环遍历每一项记录,并调用`matplotlib`的方法画出水平条形代表每台设备的工作区间;最后设置坐标轴标签和其他样式属性使图形更加清晰易读[^2]。
阅读全文