Source code for pyrobopath.scheduling.visualization

import numpy as np

from .schedule import Event, Schedule, MultiAgentSchedule


[docs] def draw_schedule(s: Schedule, show=True): import matplotlib.pyplot as plt fig, ax = plt.subplots(figsize=(9, 4)) ax.set_xlim(s.start_time(), s.end_time()) ax.set_ylim(-1.0, 1.0) ax.set_xlabel("time") colors = plt.get_cmap("Pastel2")(np.linspace(0.15, 0.85, s.n_events())) for event, color in zip(s._events, colors): p = ax.barh( "agent", left=event.start, width=event.duration, height=0.5, edgecolor="black", color=color, ) ax.bar_label(p, label_type="center") if show: plt.show() return fig, ax
[docs] def draw_multi_agent_schedule(s: MultiAgentSchedule, show=True): import matplotlib.pyplot as plt fig, ax = plt.subplots(figsize=(9, 4)) category_colors = plt.get_cmap("Pastel1")(np.linspace(0.15, 0.85, s.n_agents())) for (agent, schedule), color in zip(s.schedules.items(), category_colors): for event in schedule._events: p = ax.barh( agent, left=event.start, width=event.duration, height=0.5, edgecolor="black", color=color, ) ax.bar_label(p, label_type="center") if show: plt.show() return fig, ax
if __name__ == "__main__": schedule = Schedule() schedule.add_event(Event("eventA", 0.0, 5.0)) schedule.add_event(Event("eventB", 5.0, 2.0)) schedule.add_event(Event("eventC", 7.0, 5.0)) schedule.add_event(Event("eventD", 12.0, 10.0)) schedule.add_event(Event("eventE", 22.0, 45.0)) schedule.add_event(Event("eventF", 67.0, 15.0)) draw_schedule(schedule) schedule = MultiAgentSchedule() schedule.add_event(Event("eventA1", -1.0, 5.0), "agent1") schedule.add_event(Event("eventB1", 5.0, 2.0), "agent1") schedule.add_event(Event("eventC1", 7.0, 5.0), "agent1") schedule.add_event(Event("eventD1", 12.0, 10.0), "agent1") schedule.add_event(Event("eventE1", 22.0, 45.0), "agent1") schedule.add_event(Event("eventF1", 67.0, 15.0), "agent1") schedule.add_event(Event("eventA2", 0.0, 5.0), "agent2") schedule.add_event(Event("eventB2", 5.0, 4.0), "agent2") schedule.add_event(Event("eventC2", 9.0, 10.0), "agent2") schedule.add_event(Event("eventD2", 19.0, 10.0), "agent2") schedule.add_event(Event("eventE2", 67.0, 16.0), "agent2") other = Schedule() other.add_event(Event("eventA3", -2.0, 5.0)) other.add_event(Event("eventB3", 70.0, 20.0)) schedule.add_schedule(other, "agent3") draw_multi_agent_schedule(schedule)