用Plotly画车间调度问题甘特图
时间: 2025-04-03 21:17:43 浏览: 18
### 使用 Plotly 实现车间调度问题的甘特图可视化
要通过 `Plotly` 绘制车间调度问题的甘特图,可以利用其内置函数 `plotly.express.timeline` 或者更早期版本中的 `plotly.figure_factory.create_gantt` 函数[^1]。以下是具体方法:
#### 数据准备
为了绘制甘特图,需要准备好数据集。通常情况下,数据应包含以下字段:
- **Task**: 表示任务名称。
- **Start**: 表示任务开始时间。
- **Finish**: 表示任务结束时间。
- **Resource**: 可选字段,表示资源分配情况。
这些字段可以通过 Pandas DataFrame 来存储和管理。
```python
import pandas as pd
data = {
'Task': ['Job A', 'Job B', 'Job C'],
'Start': ['2023-09-01 08:00:00', '2023-09-01 10:00:00', '2023-09-01 12:00:00'],
'Finish': ['2023-09-01 09:00:00', '2023-09-01 11:00:00', '2023-09-01 13:00:00'],
'Resource': ['Machine 1', 'Machine 2', 'Machine 1']
}
df = pd.DataFrame(data)
# 将字符串日期转换为 datetime 类型
df['Start'] = pd.to_datetime(df['Start'])
df['Finish'] = pd.to_datetime(df['Finish'])
print(df)
```
#### 使用 `plotly.express.timeline` 进行绘图
`plotly.express.timeline` 是一种简单高效的方式用于创建甘特图。它支持颜色编码以及动态交互功能。
```python
import plotly.express as px
fig = px.timeline(
df,
x_start="Start",
x_end="Finish",
y="Task",
color="Resource", # 颜色按照 Resource 字段区分
title="车间调度甘特图"
)
fig.update_yaxes(autorange="reversed") # 倒序显示任务列表
fig.show()
```
上述代码会生成一张带有颜色区别的甘特图,其中不同机器的任务会被赋予不同的颜色。
#### 自定义样式与布局
如果希望进一步调整图表外观,比如修改字体大小、背景颜色或者添加额外标注,则可通过 `update_layout()` 方法完成自定义设置。
```python
fig.update_layout(
font=dict(family="Arial", size=14, color="#7f7f7f"),
paper_bgcolor='rgba(0,0,0,0)', # 设置透明背景
plot_bgcolor='rgba(0,0,0,0)'
)
```
以上即为基于 Python 的 Plotly 库实现车间调度问题甘特图可视化的完整流程。
---
阅读全文
相关推荐













