下面是一个用Python编写的示例代码,使用Gantt图实现在同一行上显示多个日期范围的人鱼图:
import matplotlib.pyplot as plt
import datetime
def plot_gantt(data):
fig, ax = plt.subplots(figsize=(8,4))
# 设置y轴刻度
ax.set_yticks(range(len(data)))
ax.set_yticklabels([task for task, _ in data])
ax.invert_yaxis()
# 设置x轴范围
min_date = min(data, key=lambda x: x[1][0])[1][0]
max_date = max(data, key=lambda x: x[1][1])[1][1]
ax.set_xlim(min_date, max_date)
# 绘制甘特图
for i, (task, date_range) in enumerate(data):
start_date, end_date = date_range
ax.barh(i, end_date - start_date, left=start_date, height=0.5, align='center')
plt.show()
# 数据示例
data = [
('任务1', (datetime.date(2022, 1, 1), datetime.date(2022, 1, 5))),
('任务2', (datetime.date(2022, 1, 3), datetime.date(2022, 1, 8))),
('任务3', (datetime.date(2022, 1, 6), datetime.date(2022, 1, 10)))
]
# 调用函数绘制甘特图
plot_gantt(data)
这段代码使用了matplotlib
库来绘制甘特图。首先通过set_yticks
和set_yticklabels
方法设置y轴刻度和刻度标签,然后通过invert_yaxis
方法反转y轴刻度的显示顺序。接下来使用set_xlim
方法设置x轴范围,根据任务的起始日期和结束日期来确定x轴的范围。最后使用barh
方法绘制甘特图的条形表示,其中left
参数指定了条形的起始位置,height
参数指定了条形的高度。
在示例中,data
变量是一个包含任务名称和日期范围的列表。你可以根据自己的需求修改这个列表来显示不同的任务和日期范围。