github_sync / results /score_board.py
Bachstelze
init score board without png image
eb5a0fb
raw
history blame
2.13 kB
import matplotlib.pyplot as plt
import os
def create_score_board(weeks=None, scores=None, save_path=None, show=False):
"""
Create a score board plot for R^2 scores over weeks.
Parameters
----------
weeks : list, optional
List of week numbers. Default is [0, 1, 2].
scores : list, optional
List of R^2 scores. Default is [0, 0.51, 0.59].
save_path : str, optional
Path to save the plot. If None, the plot is not saved.
show : bool, optional
Whether to display the plot. Default is False.
Returns
-------
fig : matplotlib.figure.Figure
The generated figure object.
"""
if weeks is None:
weeks = [0, 1, 2]
if scores is None:
scores = [0, 0.51, 0.59]
# Create figure and axis
fig, ax = plt.subplots(figsize=(8, 6))
# Plot the data
ax.plot(weeks, scores, marker='o', linestyle='-', color='b', linewidth=2, markersize=8)
# Set labels and title
ax.set_xlabel('Week', fontsize=12)
ax.set_ylabel('R^2 Score', fontsize=12)
ax.set_title('R^2 Score Progression Over Weeks', fontsize=14, fontweight='bold')
# Set x-axis ticks to be exactly the weeks
ax.set_xticks(weeks)
ax.set_xticklabels([f'Week {w}' for w in weeks])
# Add grid for better readability
ax.grid(True, linestyle='--', alpha=0.7)
# Annotate each point with its score
for i, (x, y) in enumerate(zip(weeks, scores)):
ax.annotate(f'{y:.2f}', (x, y), textcoords="offset points", xytext=(0,10), ha='center')
# Adjust layout to prevent clipping
fig.tight_layout()
# Save the plot if save_path is provided
if save_path is not None:
# Ensure the directory exists
#os.makedirs(os.path.dirname(save_path), exist_ok=True)
# we save it into the main directory
fig.savefig(save_path, dpi=300)
print(f"Plot saved to {save_path}")
# Show the plot if requested
if show:
plt.show()
return fig
if __name__ == "__main__":
# Example usage with default data
fig = create_score_board(save_path='score_board.png', show=True)