diff --git a/plotter/Args.py b/plotter/Args.py
index 7a588547c5c7365a98f64ed07448739ac180009e..2aa1d1a33c8deddf5af5fce42247932cb2d38cfe 100644
--- a/plotter/Args.py
+++ b/plotter/Args.py
@@ -1,7 +1,7 @@
 import sys
-
+import numpy as np
 class Args:
-    def __init__(self, filename, func, var=[None], mval=[None], oname=[None], out=[None], ndim = None):
+    def __init__(self, filename, func, var=None, mval=None, oname=None, out=None, ndim = None, min_y = None, max_y = None, title=None):
         if out == "plotter_lib_pngs/":
             print("Output directory name can't be equal to " + out)
             sys.exit(-1)
@@ -13,6 +13,9 @@ class Args:
         self.out = out
         self.func = func
         self.ndim = ndim
+        self.title = title
+        self.min_y = min_y
+        self.max_y = max_y
 
         self.CorrVals()
 
@@ -30,4 +33,34 @@ class Args:
         if type(self.mval) is not list:
             self.mval = [self.mval]
         if None in self.mval:
-            self.mval = None
\ No newline at end of file
+            self.mval = None
+
+        if type(self.min_y) is not list:
+            self.min_y = [self.min_y]
+        if None in self.min_y:
+            self.min_y = None
+        
+        if type(self.max_y) is not list:
+            self.max_y = [self.max_y]
+        if None in self.max_y:
+            self.max_y = None
+
+        # param_lists = [self.oname, self.var, self.mval, self.min_y, self.max_y]
+        # lens = []
+
+        # for param in param_lists:
+        #     if param == None:
+        #         continue
+        #     if type(param) is not list:
+        #         lens.append(1)
+        #     else:
+        #         lens.append(len(param))
+
+        # if len(lens) != 0:
+        #     lens = np.array(lens, dtype = int)
+        #     for i in range(1, len(lens)):
+        #         if np.equal(lens[0], lens[i]).any() != True:
+        #             print("Args fail")
+        #             sys.exit(-1)
+
+        
\ No newline at end of file
diff --git a/plotter/Plotter.py b/plotter/Plotter.py
index 2f69efbf2303e6a3d2af607fd18c348dcd58d20a..f26c1671046802609937337f2d4bc267dcfc9275 100755
--- a/plotter/Plotter.py
+++ b/plotter/Plotter.py
@@ -12,14 +12,20 @@ class Plotter:
     ani_pngs_dir = "plotter_lib_pngs/"
 
     def __init__(self):
-        self.filename = ""
-        self.out = ""
-        self.oname = ""
-        self.var = ""
-        self.mval = ""
-        self.function = ""
-        self.variable_names = ""
+        self.filename = None
+        self.out = None
+        self.oname = None
+        self.var = None
+        self.mval = None
+        self.function = None
+        self.file_column_names = None
         self.title = None
+        self.file_data = None
+        self.plt_max_val = None
+        self.plt_min_val = None
+        self.min_y = None
+        self.max_y = None
+        self.min_max_var_vals = None
 
     def __check_arg_dim_equiv(self, args):
         if args.var != None and args.mval != None:
@@ -30,7 +36,7 @@ class Plotter:
     def __get_variable_names(self):
         var_names = []
 
-        for d in self.data:
+        for d in self.file_data:
             names = d.variable_names
             var_names.append(np.array(names, dtype=object))
             
@@ -44,13 +50,24 @@ class Plotter:
             print("Undefined variable names")
             sys.exit(-1)
                     
-        self.variable_names  = var_names[0]
+        self.file_column_names  = var_names[0]
 
 
     def set(self, args, **kwargs):
         self.__check_arg_dim_equiv(args)
         self.filename = args.filename
         self.ndim = args.ndim
+        self.out = args.out
+        self.oname = args.oname
+        self.var = args.var
+        self.mval = args.mval
+        self.function = args.func
+        self.title = args.title
+        self.min_y = args.min_y
+        self.max_y = args.max_y
+
+        self.if_manual_plot = kwargs.get('if_manual_plot', False)
+        self.if_save_result = kwargs.get('if_save_result', True)
 
         pData = []
         
@@ -59,17 +76,10 @@ class Plotter:
             p.get_variable_names()
             pData.append(p)
 
-        self.data = copy.deepcopy(pData) 
+        self.file_data = copy.deepcopy(pData) 
         self.__get_variable_names()
 
         if args.func != self.dump:
-            self.out = args.out
-            self.oname = args.oname
-            self.var = args.var
-            self.mval = args.mval
-            self.function = args.func
-            self.if_manual_plot = kwargs.get('if_manual_plot', False)
-            self.if_save_result = kwargs.get('if_save_result', True)
 
             if args.func == self.plot or args.func == self.ani_plot:
                 self.ndim = 1
@@ -78,21 +88,21 @@ class Plotter:
             elif args.func == self.avg_plot:
                 self.ndim = 3
 
-            if self.var == None and len(self.variable_names) != 0:
-                self.var = [self.variable_names[i] for i in range(self.ndim, len(self.variable_names))]
+            if self.var == None and len(self.file_column_names) != 0:
+                self.var = [self.file_column_names[i] for i in range(self.ndim, len(self.file_column_names))]
 
-            for p in self.data:
+            for p in self.file_data:
                 p.process_file(self.ndim, self.var, self.mval)
             self.fig_count = len(self.var)
     
     def __plot(self):
         os.system("mkdir -p " + self.out)
-        x_name = self.variable_names[0]
+        x_name = self.file_column_names[0]
 
         fig = plt.figure()
 
         for y_name in self.var:
-            plt.plot(self.data[0].data[x_name], self.data[0].data[y_name], linewidth=4)
+            plt.plot(self.file_data[0].data[x_name], self.file_data[0].data[y_name], linewidth=4)
 
         plt.legend(self.var)
         plt.xlabel(x_name, fontsize=10, fontweight='bold')
@@ -101,6 +111,36 @@ class Plotter:
         else: plt.close(fig)
         if self.if_save_result: fig.savefig(self.out + self.oname[0])
 
+    def __get_min_max_ax(self):
+        min_max_var_vals = {var : [] for var in self.var}
+
+        i = 0
+        for var in self.var:
+            max_val = self.file_data[i].data[var][0]
+            min_val = self.file_data[i].data[var][0]
+
+            for data in self.file_data:
+                maval = np.max(data.data[var])
+                mival = np.min(data.data[var])
+
+                if maval > max_val:
+                    max_val = maval
+                if mival < min_val:
+                    min_val = mival
+
+            min_max_var_vals[var] = np.array([min_val, max_val])
+
+            i += 1
+
+        max_vals = np.array([min_max_var_vals[var][1] for var in self.var])
+        min_vals = np.array([min_max_var_vals[var][0] for var in self.var])
+
+        max_val = np.max(max_vals)
+        min_val = np.min(min_vals)
+
+        self.min_max_var_vals = np.array([min_val, max_val])
+
+
     def __ani_plot(self):
         if self.if_save_result:
             png_names = []
@@ -108,20 +148,25 @@ class Plotter:
             os.system("mkdir -p " + self.ani_pngs_dir)
 
             names = natsort.natsorted(self.filename,reverse=False)
-            x_name = self.variable_names[0]
+            x_name = self.file_column_names[0]
             data_i = 0
 
-            # max_val = -1e9
-            # min_val = 1e9
+            if self.max_y == None:
+                max_val = self.min_max_var_vals[1]
+            else:
+                max_val = self.max_y[0]
 
-            # for y_name in self.var:
-            #     local_max = np.
+            if self.min_y == None:
+                min_val = self.min_max_var_vals[0]
+            else:
+                min_val = self.min_y[0]
 
             for datafile in names:
                 fig = plt.figure()
-
+                plt.ylim([min_val, max_val])
+                
                 for y_name in self.var:
-                    plt.plot(self.data[data_i].data[x_name], self.data[data_i].data[y_name], linewidth=4)
+                    plt.plot(self.file_data[data_i].data[x_name], self.file_data[data_i].data[y_name], linewidth=4)
 
                 plt.legend(self.var)
                 plt.xlabel(x_name, fontsize=10, fontweight='bold')
@@ -143,8 +188,8 @@ class Plotter:
 
     def __plot_contour(self):
         os.system("mkdir -p " + self.out)
-        x_name = self.variable_names[0]
-        y_name = self.variable_names[1]
+        x_name = self.file_column_names[0]
+        y_name = self.file_column_names[1]
 
         if self.oname == None:
             fig_names = self.var
@@ -161,9 +206,9 @@ class Plotter:
             else:
                 title = self.title
 
-            X = self.data[0].data[x_name]
-            Y = self.data[0].data[y_name]
-            Z = self.data[0].data[self.var[i]]
+            X = self.file_data[0].data[x_name]
+            Y = self.file_data[0].data[y_name]
+            Z = self.file_data[0].data[self.var[i]]
             
             cp = ax.contourf(X, Y, Z)
             fig.colorbar(cp) # Add a colorbar to a plot
@@ -177,13 +222,14 @@ class Plotter:
 
     def __get_min_max_bar(self):
         self.filename = natsort.natsorted(self.filename,reverse=False)
-        self.vals = {var : [] for var in self.var}
+        self.min_max_var_vals = {var : [] for var in self.var}
 
+        i = 0
         for var in self.var:
-            max_val = -1e9
-            min_val = 1e9
+            max_val = self.file_data[i].data[var][0][0]
+            min_val = self.file_data[i].data[var][0][0]
 
-            for data in self.data:
+            for data in self.file_data:
                 maval = np.max(data.data[var])
                 mival = np.min(data.data[var])
 
@@ -192,7 +238,9 @@ class Plotter:
                 if mival < min_val:
                     min_val = mival
 
-            self.vals[var] = np.array([min_val, max_val])
+            self.min_max_var_vals[var] = np.array([min_val, max_val])
+
+            i += 1
 
     def __ani_plot_contour(self):
         if self.if_save_result:
@@ -200,8 +248,8 @@ class Plotter:
             os.system("mkdir -p " + self.out)
             os.system("mkdir -p " + self.ani_pngs_dir)
 
-            x_name = self.variable_names[0]
-            y_name = self.variable_names[1]
+            x_name = self.file_column_names[0]
+            y_name = self.file_column_names[1]
 
             if self.oname == None:
                 fig_names = self.var
@@ -210,8 +258,20 @@ class Plotter:
                 fig_names = self.oname
                 fig_end = ""
 
-            X = self.data[0].data[x_name]
-            Y = self.data[0].data[y_name]
+            X = self.file_data[0].data[x_name]
+            Y = self.file_data[0].data[y_name]
+
+            if self.max_y == None:
+                max_val = {var:self.min_max_var_vals[var][1] for var in self.var}
+            else:
+                max_val = {var:self.max_y[i] for var, i in zip(self.var, list(range(len(self.var))))}
+
+            if self.min_y == None:
+                min_val = {var:self.min_max_var_vals[var][0] for var in self.var}
+            else:
+                min_val = {var:self.min_y[i] for var, i in zip(self.var, list(range(len(self.var))))}
+
+            # print(max_val)
 
             i = 0
             for var in self.var:
@@ -223,14 +283,14 @@ class Plotter:
                 counter = 0
                 png_names = []
 
-                for data in self.data:
+                for data in self.file_data:
                     fig,ax=plt.subplots(1,1)
                     ax.set_title(title)
                     ax.set_xlabel(x_name)
                     ax.set_ylabel(y_name)
 
                     Z = data.data[var]
-                    cp = ax.contourf(X, Y, Z, vmin=self.vals[var][0], vmax=self.vals[var][1])
+                    cp = ax.contourf(X, Y, Z, vmin=min_val[var], vmax=max_val[var])
                     fig.colorbar(cp) # Add a colorbar to a plot
                     plt.close(fig)
                     figname = var + str(counter)
@@ -269,11 +329,11 @@ class Plotter:
     def __avg_plot(self):
         os.system("mkdir -p " + self.out)
         fig = plt.figure()
-        x_name = self.variable_names[2]
-        x = self.data[0].data[x_name]
+        x_name = self.file_column_names[2]
+        x = self.file_data[0].data[x_name]
 
         for var in self.var:
-            avg_data = self.__avg(self.data[0].data, var)
+            avg_data = self.__avg(self.file_data[0].data, var)
             plt.plot(x, avg_data, linewidth=4)
 
         plt.legend(self.var)
@@ -284,28 +344,28 @@ class Plotter:
         if self.if_save_result: fig.savefig(self.out + self.oname[0])
 
     def __dump(self):
-        for variable_name in self.variable_names:
+        for variable_name in self.file_column_names:
             print(variable_name, end=' ')
         print('\n')
 
     def __plot_diff(self):
-        for name in self.variable_names:
-            if self.data[0].data[name].shape != self.data[1].data[name].shape:
+        for name in self.file_column_names:
+            if self.file_data[0].data[name].shape != self.file_data[1].data[name].shape:
                 print("Data dimensions do not match")
                 sys.exit(-1)
         
         diff = {}
         for name in self.var:
-            diff[name] = self.data[0].data[name] - self.data[1].data[name]
+            diff[name] = self.file_data[0].data[name] - self.file_data[1].data[name]
 
-        dim_variables = list(set(self.variable_names) - set(self.var))
+        dim_variables = list(set(self.file_column_names) - set(self.var))
 
         for name in dim_variables:
-            diff[name] = self.data[0].data[name]
+            diff[name] = self.file_data[0].data[name]
 
         diffProcData = ProcData()
         diffProcData.data = diff
-        self.data = [diffProcData]
+        self.file_data = [diffProcData]
 
         basename0 = os.path.basename(self.filename[0])
         basename1 = os.path.basename(self.filename[1])
@@ -323,7 +383,7 @@ class Plotter:
         self.__plot()
 
     def ani_plot(self):
-        self.__get_min_max_bar()
+        self.__get_min_max_ax()
         self.__ani_plot()
 
     def avg_plot(self):
@@ -341,6 +401,6 @@ class Plotter:
 
     def get_data(self):
         # filenames = [os.path.basename(name) for name in self.filename]
-        # return_data = {name : copy.deepcopy(data.data) for name, data in zip(filenames, self.data)}
-        return_data = [copy.deepcopy(data.data) for data in self.data]
+        # return_data = {name : copy.deepcopy(data.data) for name, data in zip(filenames, self.file_data)}
+        return_data = [copy.deepcopy(data.data) for data in self.file_data]
         return return_data
\ No newline at end of file
diff --git a/plotter/ProcData.py b/plotter/ProcData.py
index b398062ae76b3651ad23b5cc7f20d962715a9b3b..8dd26462cb1a63f5a9c3478791bd5f2a9c2459ee 100755
--- a/plotter/ProcData.py
+++ b/plotter/ProcData.py
@@ -109,7 +109,6 @@ class ProcData:
             column_names = self.var
             
         if self.mval != None:
-            print(self.mval)
             for col, abs_val in zip(column_names, self.mval):
                 check_variable_idx = np.where(self.variable_names == col)[0][0]
                 idx = np.where(np.abs(file_data[check_variable_idx]) > abs_val)[0]
diff --git a/plotter/main.py b/plotter/main.py
index 2deb324dfa7eed28d1d28acd4c260dd9dd6ddffb..442747ce66cf0b494ad9a4ffe3cb316e2d13db3f 100755
--- a/plotter/main.py
+++ b/plotter/main.py
@@ -14,13 +14,13 @@ def dump(filename, var=[None], mval=[None]):
     Plot.set(args, if_manual_plot=manual_plot, if_save_result=save_result)
     Plot.dump()
 
-def plot(filename, out = './', oname = 'fig.png', var=[None], mval=[None]):
+def plot(filename, out = './', oname = 'fig.png', var=[None], mval=[None], min_y = None, max_y = None):
     Plot = Plotter()
     args = Args([filename], Plot.plot, var=var, mval=mval, oname=oname, out=out)
     Plot.set(args, if_manual_plot=manual_plot, if_save_result=save_result)
     Plot.plot()
 
-def ani_plot(filename, out = './', oname = 'fig.gif', var=[None], mval=[None]):
+def ani_plot(filename, out = './', oname = 'fig.gif', var=[None], mval=[None], min_y = None, max_y = None):
     pp = str(PurePath(filename).parent) + '/'
     name = str(PurePath(filename).name )
     command = 'find ' + pp + ' -name ' + "'" + name + "'"
@@ -30,7 +30,7 @@ def ani_plot(filename, out = './', oname = 'fig.gif', var=[None], mval=[None]):
     names = natsort.natsorted(out_res,reverse=False)
 
     Plot = Plotter()
-    args = Args(names, Plot.ani_plot, var=var, mval=mval, oname=oname, out=out)
+    args = Args(names, Plot.ani_plot, var=var, mval=mval, oname=oname, out=out, min_y=min_y, max_y=max_y)
     Plot.set(args, if_manual_plot=manual_plot, if_save_result=save_result)
     Plot.ani_plot()
 
@@ -40,7 +40,7 @@ def plot_contour(filename, out = './', oname = [None], var=[None], mval=[None]):
     Plot.set(args, if_manual_plot=manual_plot, if_save_result=save_result)
     Plot.plot_contour()
 
-def ani_plot_contour(filename, out = './', oname = [None], var=[None], mval=[None]):
+def ani_plot_contour(filename, out = './', oname = [None], var=[None], mval=[None], min_y = None, max_y = None):
     pp = str(PurePath(filename).parent) + '/'
     name = str(PurePath(filename).name )
     command = 'find ' + pp + ' -name ' + "'" + name + "'"
@@ -50,7 +50,7 @@ def ani_plot_contour(filename, out = './', oname = [None], var=[None], mval=[Non
     names = natsort.natsorted(out_res,reverse=False)
 
     Plot = Plotter()
-    args = Args(names, Plot.ani_plot_contour, var=var, mval=mval, oname=oname, out=out)
+    args = Args(names, Plot.ani_plot_contour, var=var, mval=mval, oname=oname, out=out, min_y=min_y, max_y=max_y)
     Plot.set(args, if_manual_plot=manual_plot, if_save_result=save_result)
     Plot.ani_plot_contour()