From 9a2ff0163f7eba05cd48baec713c61216529d38f Mon Sep 17 00:00:00 2001 From: Emil Shanaty <65846814+emil28092005@users.noreply.github.com> Date: Mon, 14 Apr 2025 22:52:39 +0300 Subject: [PATCH] Fix matplotlib display: switch to Agg backend and save plot to file --- fitness_plot.png | Bin 0 -> 18855 bytes main.py | 8 +++++--- requirements.txt | 4 ++++ 3 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 fitness_plot.png create mode 100644 requirements.txt diff --git a/fitness_plot.png b/fitness_plot.png new file mode 100644 index 0000000000000000000000000000000000000000..8eae2dbc59b72bfc8c280a358f16977f8cbdd85a GIT binary patch literal 18855 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 pVHl((n~noZVQc$8^{qh*94>Nid^|Z7skk=2.0.0 +pygame>=2.5.0 +numpy>=1.24.0 +matplotlib>=3.7.0 \ No newline at end of file