<jupyter_start><jupyter_text>Generate report pics<jupyter_code>metrics
figsize = (7, 3)
bbox_to_anchor = (1.02, -0.2, 0.7, 0.5)
fig, ax=plt.subplots(figsize=figsize)
metric = 'New Nodes'
for title, group in results_df.groupby('search'):
    group.plot(x='# Actions', y=metric, label=title, ax=ax, logy=True, c=colors[title])
ax.set_xticks([20, 72, 88, 104])
ax.set_xticklabels([20, 72, 88, 104])
ax.set_title(metric)
ax.set_xlabel('# Actions')
ax.set_ylabel(metric)
ax.grid()
ax.legend().set_visible(False)
ax.set_title('Number of Nodes Expanded vs Number of Actions in the Domain')

handles, labels = ax.get_legend_handles_labels()
lgd = ax.legend(handles, labels, bbox_to_anchor=bbox_to_anchor, loc=3,
       ncol=1, mode="expand", borderaxespad=0.)

plt.tight_layout()
plt.savefig(f'./n_actions_vs_n_nodes.png', bbox_extra_artists=(lgd,), bbox_inches='tight')
fig, ax=plt.subplots(figsize=figsize)
metric = 'Time Elapsed (s)'
for title, group in results_df.groupby('search'):
    group.plot(x='# Actions', y=metric, label=title, ax=ax, logy=True, c=colors[title])
ax.set_xticks([20, 72, 88, 104])
ax.set_xticklabels([20, 72, 88, 104])
ax.set_title(metric)
ax.set_xlabel('# Actions')
ax.set_ylabel(metric)
ax.grid()
ax.legend().set_visible(False)
ax.set_title('Number of Nodes Expanded vs Number of Actions in the Domain')

handles, labels = ax.get_legend_handles_labels()
lgd = ax.legend(handles, labels, bbox_to_anchor=bbox_to_anchor, loc=3,
       ncol=1, mode="expand", borderaxespad=0.)

plt.tight_layout()
plt.savefig(f'./n_actions_vs_time.png', bbox_extra_artists=(lgd,), bbox_inches='tight')
fig, ax=plt.subplots(figsize=figsize)
metric = 'Plan Length'
for title, group in results_df.groupby('search'):
    group.plot(x='# Actions', y=metric, label=title, ax=ax, logy=True, c=colors[title])
ax.set_xticks([20, 72, 88, 104])
ax.set_xticklabels([20, 72, 88, 104])
ax.set_title(metric)
ax.set_xlabel('# Actions')
ax.set_ylabel(metric)
ax.grid()
ax.legend().set_visible(False)
ax.set_title('Plan Length for each Algorithm')

handles, labels = ax.get_legend_handles_labels()
lgd = ax.legend(handles, labels, bbox_to_anchor=bbox_to_anchor, loc=3,
       ncol=1, mode="expand", borderaxespad=0.)

plt.tight_layout()
plt.savefig(f'./plan_length.png', bbox_extra_artists=(lgd,), bbox_inches='tight')
fig, ax=plt.subplots(figsize=figsize)
metric = 'Plan Length'
for title, group in results_df.groupby('search'):
    if title != 'depth_first_graph_search':
        group.plot(x='# Actions', y=metric, label=title, ax=ax, logy=True, c=colors[title])
ax.set_xticks([20, 72, 88, 104])
ax.set_xticklabels([20, 72, 88, 104])
ax.set_title(metric)
ax.set_xlabel('# Actions')
ax.set_ylabel(metric)
ax.grid()
ax.legend().set_visible(False)
ax.set_title('Plan Length for each Algorithm')

handles, labels = ax.get_legend_handles_labels()
lgd = ax.legend(handles, labels, bbox_to_anchor=bbox_to_anchor, loc=3,
       ncol=1, mode="expand", borderaxespad=0.)

plt.tight_layout()
plt.savefig(f'./plan_length_no_dfs.png', bbox_extra_artists=(lgd,), bbox_inches='tight')
results_df<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.1654281098546042, 'fraction_numerical': 0.030694668820678513, 'mean_word_length': 6.8979591836734695, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '126441', 'license': 'MIT', 'n_tokens_mistral': 1339, 'n_tokens_neox': 1215, 'n_words': 232, 'path': 'Projects/2_Classical Planning/explore.ipynb', 'repo_name': 'r-luo/artificial-intelligence', 'size': '3095'}