import matplotlib.pyplot as plt import matplotlib.dates as mdates from datetime import datetime import pandas as pd # Define updated tasks and durations updated_tasks = [ ("Refactor BSV modules", "2025-06-01", "2025-07-01"), ("Setup C benchmark suite", "2025-06-01", "2025-07-01"), ("EuroSys paper revisions (feedback)", "2025-06-01", "2025-07-31"), ("Formal progression review", "2025-06-01", "2025-07-01"), ("Submit EuroSys for preliminary feedback", "2025-06-01", "2025-07-01"), ("Debug Toooba memory pipeline (TLB bypass)", "2025-07-01", "2025-08-31"), ("Validate C benchmark suite", "2025-07-01", "2025-08-01"), ("Documentation for second paper", "2025-07-15", "2025-08-31"), ("Finalise EuroSys revisions", "2025-07-01", "2025-07-31"), ("Continue memory debugging", "2025-08-01", "2025-09-30"), ("Draft second paper (intro/method)", "2025-08-01", "2025-09-30"), ("Generate experimental results", "2025-08-15", "2025-09-30"), ("Publish EuroSys paper", "2025-09-01", "2025-10-01"), ("Benchmark Toooba design", "2025-09-01", "2025-10-31"), ("Draft eval & analysis (second paper)", "2025-09-15", "2025-10-31"), ("Third experimental phase", "2025-10-01", "2025-11-30"), ("Modify allocators (remove mmap)", "2025-10-15", "2025-11-30"), ("Finalise second paper", "2025-11-01", "2025-11-30"), ("Strip huge-page optimisations", "2025-11-01", "2025-12-31"), ("Analyse instruction-level reductions", "2025-11-01", "2025-12-31"), ("Draft third research paper", "2025-11-15", "2025-12-31"), ("Evaluate/profile third paper", "2025-12-01", "2026-01-31"), ("Write thesis chapters (Exp 1 & 2)", "2025-12-15", "2026-01-31"), ("Thesis development & refinement", "2026-01-01", "2026-09-30"), ("Submit third paper", "2026-01-01", "2026-09-30"), ("Prepare full dissertation", "2026-01-01", "2026-09-30"), ] # Convert to DataFrame df = pd.DataFrame(updated_tasks, columns=["Task", "Start", "End"]) df["Start"] = pd.to_datetime(df["Start"]) df["End"] = pd.to_datetime(df["End"]) df["Duration"] = df["End"] - df["Start"] # Plot fig, ax = plt.subplots(figsize=(14, 12)) for i, row in df.iterrows(): ax.barh(i, row["Duration"].days, left=row["Start"], height=0.8) ax.set_yticks(range(len(df))) ax.set_yticklabels(df["Task"]) ax.xaxis.set_major_locator(mdates.MonthLocator()) ax.xaxis.set_major_formatter(mdates.DateFormatter("%b %Y")) plt.xticks(rotation=45) plt.title("PhD Gantt Chart: June 2025 – September 2026") plt.tight_layout() plt.grid(axis='x') plt.show()