diff --git a/scripts/plot_approximation_results.py b/scripts/plot_approximation_results.py
new file mode 100644
index 0000000000000000000000000000000000000000..b94f46bfd55fdd4118efc82947ccb31b5ad0fb86
--- /dev/null
+++ b/scripts/plot_approximation_results.py
@@ -0,0 +1,52 @@
+# -*- coding: utf-8 -*-
+"""Script to plot results of ANN model testing.
+
+@author: Laura C. Kühle
+"""
+import sys
+import time
+
+from tcd import Initial_Condition
+from tcd import Quadrature
+from tcd.Plotting import plot_approximation_results
+
+
+def main() -> None:
+    """Plot results of ANN model tests."""
+    with open(str(snakemake.log[0]), 'w', encoding='utf-8') as logfile:
+        sys.stdout = logfile
+        sys.stderr = logfile
+
+        tic = time.perf_counter()
+
+        if snakemake.config['schemes'][snakemake.wildcards['scheme']][
+                'detector'] == 'ArtificialNeuralNetwork':
+            snakemake.params['dg_params']['detector_config']['model_state'] = \
+                snakemake.params['directory'] + '/trained models/' + \
+                snakemake.config['schemes'][snakemake.wildcards['scheme']][
+                    'detector_config']['model_state']
+
+        detector_dict = snakemake.params['dg_params'].copy()
+
+        init_cond = getattr(Initial_Condition, detector_dict.pop(
+            'init_cond', 'Sine'))(config=detector_dict.pop('init_config', {}))
+        quadrature = getattr(Quadrature, detector_dict.pop(
+            'quadrature', 'Gauss'))(detector_dict.pop('quadrature_config', {}))
+        colors = detector_dict.pop('colors', None)
+
+        plot_approximation_results(
+            directory=snakemake.params['plot_dir'],
+            plot_name=snakemake.wildcards['scheme'], colors=colors,
+            data_file=snakemake.params.plot_dir + '/' + snakemake.wildcards[
+                'scheme'],
+            quadrature=quadrature, init_cond=init_cond)
+
+        toc = time.perf_counter()
+        print(f'Time: {toc - tic:0.4f}s')
+
+
+if __name__ == '__main__':
+    if "snakemake" in locals():
+        main()
+    else:
+        print('Not Defined.')
diff --git a/workflows/approximation.smk b/workflows/approximation.smk
index 5613a69722915b2d547481457dedad8f5f4c79f4..b07ba24caceaf8d071d42c2e11f54678ae0367db 100644
--- a/workflows/approximation.smk
+++ b/workflows/approximation.smk
@@ -1,10 +1,3 @@
-import sys
-import time
-
-from scripts.tcd import Initial_Condition
-from scripts.tcd import Quadrature
-from scripts.tcd.Plotting import plot_approximation_results
-
 configfile: 'config.yaml'
 
 
@@ -43,41 +36,14 @@ rule approximate_solution:
 
 rule plot_approximation_results:
     input:
-        DIR +'/fig/{scheme}.json'
+        DIR+'/fig/{scheme}.json'
     output:
         expand(DIR + '/fig/{plot}/{{scheme}}.pdf', plot=PLOTS)
     params:
         dg_params=lambda wildcards: config['schemes'][wildcards.scheme],
-        plot_dir=DIR + '/fig'
+        plot_dir=DIR + '/fig',
+        directory = DIR
     log:
         DIR+'/log/plot_approximation_results/{scheme}.log'
-    run:
-        with open(str(log), 'w') as logfile:
-            sys.stdout = logfile
-            sys.stderr = logfile
-
-            tic = time.perf_counter()
-
-            if config['schemes'][wildcards.scheme]['detector'] == \
-                    'ArtificialNeuralNetwork':
-                params.dg_params['detector_config']['model_state'] = \
-                    DIR + '/trained models/' + config['schemes'][
-                        wildcards.scheme]['detector_config']['model_state']
-
-            detector_dict = params.dg_params.copy()
-
-            init_cond = getattr(Initial_Condition, detector_dict.pop(
-                'init_cond', 'Sine'))(
-                config=detector_dict.pop('init_config', {}))
-            quadrature = getattr(Quadrature, detector_dict.pop(
-                'quadrature', 'Gauss'))(detector_dict.pop(
-                'quadrature_config', {}))
-            colors = detector_dict.pop('colors', None)
-
-            plot_approximation_results(directory=params.plot_dir,
-                plot_name=wildcards.scheme, colors=colors,
-                data_file=params.plot_dir+'/'+wildcards.scheme,
-                quadrature=quadrature, init_cond=init_cond)
-
-            toc = time.perf_counter()
-            print(f'Time: {toc - tic:0.4f}s')
\ No newline at end of file
+    script:
+        '../scripts/plot_approximation_results.py'