Skip to content

Conversation

@sanjaysrikakulam
Copy link
Member

The Python script used for creating the image (the input is an Excel file with three columns: Project name, Start, End and the input was shared by @bgruening):

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import seaborn as sns
import matplotlib.patches as patches

# Read Excel table
df = pd.read_excel("/home/sanjay/playground/Galaxy_Europe_Projects-start-end_cleaned.xlsx")
df.columns = df.columns.str.strip()
df['start'] = pd.to_datetime(df['Start'])
df['end'] = pd.to_datetime(df['End'])

# Sort projects so the earliest projects appear at the top
df = df.sort_values(by='start', ascending=True).reset_index(drop=True)
bar_color = '#00A9E0'
fig, ax = plt.subplots(figsize=(16, max(8, len(df)*0.3)))

# Plot each project as a horizontal bar with rounded edges
for i, row in enumerate(df.itertuples()):
    width = (row.end - row.start).days
    rect = patches.FancyBboxPatch(
        (mdates.date2num(row.start), i - 0.3),  # x, y position
        width,
        0.6,  # height
        boxstyle="round,pad=0.1,rounding_size=3", 
        color=bar_color,
        linewidth=0  # no border
    )
    ax.add_patch(rect)

# Adjust x limits to include bars fully
ax.set_xlim(df['start'].min() - pd.Timedelta(days=30), df['end'].max() + pd.Timedelta(days=30))
ax.set_ylim(-1, len(df))

# Set Y ticks and labels to project names
ax.set_yticks(range(len(df)))
ax.set_yticklabels(df['Project name'], fontsize=15, fontweight='bold')

# Invert Y axis so earliest projects are at the top
ax.invert_yaxis()

ax.xaxis.set_major_locator(mdates.YearLocator())
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y'))

plt.xticks(rotation=45, fontsize=15, fontweight='bold')
ax.set_xlabel("Year", fontsize=15, fontweight='bold')
ax.set_ylabel("Project Name", fontsize=15, fontweight='bold')
ax.set_title("Project Timeline", fontsize=15, fontweight='bold')

# Remove borders/frame
for spine in ax.spines.values():
    spine.set_visible(False)

plt.tight_layout()

plt.savefig(output_path, dpi=300, bbox_inches='tight', transparent=True)

print(f"Timeline plot saved as {output_path}")

@sanjaysrikakulam
Copy link
Member Author

I have also added a table with the overview and URLs to the project/grant-related websites.

| [Verbundprojekt Deutsches Kompetenzzentrum Cloud-Technologien für Datenmanagement und -verarbeitung de.KCD](https://datenkompetenz.cloud/) | 01/12/2023 | 30/11/2026 |
| [CRC1425](https://www.sfb1425.uni-freiburg.de/) | 01/07/2020 | 01/06/2024 |
| [CRC 992](https://www.sfb992.uni-freiburg.de/) | 01/07/2015 | 01/06/2024 |
| [NFDI DataPLANT](https://www.nfdi4plants.org/) | 10/01/2020 | 09/01/2025 |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it possible this is a different Date-format for data plant than the others? I though it lasts until Spetember 2025, not January?

@Sch-Da
Copy link
Contributor

Sch-Da commented Sep 9, 2025

Is the MWK also a part of this? @teresa-m asked, and I think she is right.

@bgruening
Copy link
Member

Yes it is.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants