43 lines
1.6 KiB
Python
43 lines
1.6 KiB
Python
import matplotlib.pyplot as plt
|
|
|
|
def plot_elapsed_times(related_thresholds, elapsed_times_list, fig_text, file_name, xlabel=r'$\theta$', ylabel='Time (s)', title=None, legend_labels=None):
|
|
"""
|
|
Utility function to plot elapsed times against related thresholds for multiple settings.
|
|
|
|
Args:
|
|
related_thresholds (list): Related thresholds (x-axis values).
|
|
elapsed_times_list (list of lists): List of elapsed times (y-axis values) for different settings.
|
|
fig_text (str): Text to display on the figure.
|
|
file_name (str): Name of the file to save the plot.
|
|
xlabel (str): Label for the x-axis.
|
|
ylabel (str): Label for the y-axis.
|
|
title (str): Title of the plot (optional).
|
|
legend_labels (list): List of labels for the legend (optional).
|
|
"""
|
|
fig = plt.figure(figsize=(8, 6))
|
|
|
|
# Plot each elapsed_times list with a different color and label
|
|
for i, elapsed_times in enumerate(elapsed_times_list):
|
|
label = legend_labels[i] if legend_labels and i < len(legend_labels) else f"Setting {i + 1}"
|
|
plt.plot(related_thresholds, elapsed_times, marker='o', label=label)
|
|
|
|
plt.xlabel(xlabel, fontsize=14)
|
|
plt.ylabel(ylabel, fontsize=14)
|
|
|
|
plt.xticks(related_thresholds)
|
|
|
|
if title:
|
|
plt.title(title, fontsize=16)
|
|
|
|
plt.grid(True)
|
|
if legend_labels:
|
|
plt.legend(fontsize=12)
|
|
plt.tight_layout()
|
|
|
|
# Add figure text
|
|
plt.figtext(0.1, 0.01, fig_text, ha='left', fontsize=10)
|
|
|
|
# Save the figure
|
|
plt.savefig(file_name, bbox_inches='tight', dpi=300)
|
|
|
|
return fig |