From eb8ba209b370b9df9a43a4ed98f1ab6373f686fe Mon Sep 17 00:00:00 2001
From: Lizzzka007 <gashchuk2011@mail.ru>
Date: Sun, 10 Dec 2023 15:14:00 +0300
Subject: [PATCH] Add transpose

---
 plotter/Args.py    |   3 +-
 plotter/Plotter.py | 117 ++++++++++++++++++++++++++++++++-------------
 plotter/main.py    |  36 +++++++-------
 3 files changed, 104 insertions(+), 52 deletions(-)

diff --git a/plotter/Args.py b/plotter/Args.py
index 4b81703..360763d 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, min_y = None, max_y = None, title=None, levels=None, plane_type = None, slice_position = None):
+    def __init__(self, filename, func, var=None, mval=None, oname=None, out=None, ndim = None, min_y = None, max_y = None, title=None, levels=None, plane_type = None, slice_position = None, ifTranspose=False):
         if out == "plotter_lib_pngs/":
             print("Output directory name can't be equal to " + out)
             sys.exit(-1)
@@ -19,6 +19,7 @@ class Args:
         self.levels = levels
         self.plane_type = plane_type
         self.slice_position = slice_position
+        self.ifTranspose = ifTranspose
 
         self.CorrVals()
 
diff --git a/plotter/Plotter.py b/plotter/Plotter.py
index b4fa3d2..b389d5f 100755
--- a/plotter/Plotter.py
+++ b/plotter/Plotter.py
@@ -30,6 +30,7 @@ class Plotter:
         self.min_max_var_vals = None
         self.plane_type = None
         self.slice_position = None
+        self.ifTranspose = False
 
     def __check_arg_dim_equiv(self, args):
         if args.var != None and args.mval != None:
@@ -90,6 +91,7 @@ class Plotter:
         self.max_y = args.max_y
         self.plane_type = args.plane_type
         self.slice_position = args.slice_position
+        self.ifTranspose = args.ifTranspose
 
         if args.levels != None:
             self.levels = args.levels
@@ -145,9 +147,14 @@ class Plotter:
             y_name = self.var[i]
             fig = plt.figure()
             
-            plt.plot(self.file_data[0].data[x_name], self.file_data[0].data[y_name], linewidth=4)
-            plt.xlabel(x_name, fontsize=10, fontweight='bold')
-            plt.ylabel(y_name, fontsize=10, fontweight='bold')
+            if self.ifTranspose:
+                plt.plot(self.file_data[0].data[y_name], self.file_data[0].data[x_name], linewidth=4)
+                plt.xlabel(y_name, fontsize=10, fontweight='bold')
+                plt.ylabel(x_name, fontsize=10, fontweight='bold')
+            else:
+                plt.plot(self.file_data[0].data[x_name], self.file_data[0].data[y_name], linewidth=4)
+                plt.xlabel(x_name, fontsize=10, fontweight='bold')
+                plt.ylabel(y_name, fontsize=10, fontweight='bold')
             
             if self.if_manual_plot: plt.show()
             else: plt.close(fig)
@@ -167,10 +174,16 @@ class Plotter:
         for i in range(self.fig_count):
             fig = plt.figure()
             for y_name in self.var:
-                plt.plot(self.file_data[0].data[x_name], self.file_data[0].data[y_name], linewidth=4, label = y_name)
+                if self.ifTranspose:
+                    plt.plot(self.file_data[0].data[y_name], self.file_data[0].data[x_name], linewidth=4, label = x_name)
+                else:
+                    plt.plot(self.file_data[0].data[x_name], self.file_data[0].data[y_name], linewidth=4, label = y_name)
+
+            if self.ifTranspose:
+                plt.xlabel(y_name, fontsize=10, fontweight='bold')
+            else:
+                plt.xlabel(x_name, fontsize=10, fontweight='bold')
 
-            plt.xlabel(x_name, fontsize=10, fontweight='bold')
-            # plt.ylabel(y_name, fontsize=10, fontweight='bold')
             plt.legend()
             
             if self.if_manual_plot: plt.show()
@@ -193,11 +206,19 @@ class Plotter:
             fig = plt.figure()
 
             for read_data in self.file_data:
-                plt.plot(read_data.data[x_name], read_data.data[y_name], linewidth=4)
+                if self.ifTranspose:
+                    plt.plot(read_data.data[y_name], read_data.data[x_name], linewidth=4)
+                else:
+                    plt.plot(read_data.data[x_name], read_data.data[y_name], linewidth=4)
 
             plt.legend(self.filename)
-            plt.xlabel(x_name, fontsize=10, fontweight='bold')
-            plt.ylabel(y_name, fontsize=10, fontweight='bold')
+
+            if self.ifTranspose:
+                plt.xlabel(x_name, fontsize=10, fontweight='bold')
+                plt.ylabel(y_name, fontsize=10, fontweight='bold')
+            else:
+                plt.xlabel(y_name, fontsize=10, fontweight='bold')
+                plt.ylabel(x_name, fontsize=10, fontweight='bold')
             
             if self.if_manual_plot: plt.show()
             else: plt.close(fig)
@@ -254,10 +275,17 @@ class Plotter:
 
             for datafile in names:
                 fig = plt.figure()
-                plt.ylim([min_val, max_val])
+
+                if self.ifTranspose:
+                    plt.ylim([min_val, max_val])
+                else:
+                    plt.xlim([min_val, max_val])
                 
                 for y_name in self.var:
-                    plt.plot(self.file_data[data_i].data[x_name], self.file_data[data_i].data[y_name], linewidth=4)
+                    if self.ifTranspose:
+                        plt.plot(self.file_data[data_i].data[y_name], self.file_data[data_i].data[x_name], linewidth=4)
+                    else:
+                        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')
@@ -316,15 +344,26 @@ class Plotter:
        
             levels = np.linspace(vmin, vmax, self.levels)
 
-            if self.function == self.plot_diff:
-                cp = ax.contourf(X, Y, Z)
+            if self.ifTranspose:
+                if self.function == self.plot_diff:
+                    cp = ax.contourf(Y, X, Z.T)
+                else:
+                    cp = ax.contourf(Y, X, Z.T, vmin=vmin, vmax=vmax, levels=levels)
+
+                ax.set_ylabel(x_name)
+                ax.set_xlabel(y_name)
+
             else:
-                cp = ax.contourf(X, Y, Z, vmin=vmin, vmax=vmax, levels=levels)
-            # fig.colorbar(ScalarMappable(norm=cp.norm, cmap=cp.cmap),ticks=range(min_val[self.var[i]], max_val[self.var[i]]))
+                if self.function == self.plot_diff:
+                    cp = ax.contourf(X, Y, Z)
+                else:
+                    cp = ax.contourf(X, Y, Z, vmin=vmin, vmax=vmax, levels=levels)
+
+                ax.set_xlabel(x_name)
+                ax.set_ylabel(y_name)
+
             fig.colorbar(cp) # Add a colorbar to a plot
             ax.set_title(title)
-            ax.set_xlabel(x_name)
-            ax.set_ylabel(y_name)
             
             if self.if_manual_plot: plt.show()
             else: plt.close(fig)
@@ -395,11 +434,17 @@ class Plotter:
 
                     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=min_val[var], vmax=max_val[var], levels=levels)
+
+                    if self.ifTranspose:
+                        cp = ax.contourf(Y, X, Z.T, vmin=min_val[var], vmax=max_val[var], levels=levels)
+                        ax.set_ylabel(x_name)
+                        ax.set_xlabel(y_name)
+                    else:
+                        cp = ax.contourf(X, Y, Z, vmin=min_val[var], vmax=max_val[var], levels=levels)
+                        ax.set_xlabel(x_name)
+                        ax.set_ylabel(y_name)
+
                     fig.colorbar(cp) # Add a colorbar to a plot
                     plt.close(fig)
                     figname = var + str(counter)
@@ -445,10 +490,18 @@ class Plotter:
 
         for var in self.var:
             avg_data = self.__avg(self.file_data[0].data, var)
-            plt.plot(x, avg_data, linewidth=4)
+
+            if self.ifTranspose:
+                plt.plot(avg_data, x, linewidth=4)
+            else:
+                plt.plot(x, avg_data, linewidth=4)
 
         plt.legend(self.var)
-        plt.xlabel(x_name, fontsize=10, fontweight='bold')
+
+        if self.ifTranspose:
+            plt.ylabel(x_name, fontsize=10, fontweight='bold')
+        else:
+            plt.xlabel(x_name, fontsize=10, fontweight='bold')
 
         if self.if_manual_plot: plt.show()
         else: plt.close(fig)
@@ -522,13 +575,6 @@ class Plotter:
             z_name = self.file_column_names[1]
             arr = self.file_data[0].data[z_name]
             pos = self.__find_closest(arr, self.slice_position)
-
-        # if self.oname == None:
-        #     fig_names = self.var
-        #     fig_end = ".png"
-        # else:
-        #     fig_names = self.oname
-        #     fig_end = ""
         
         for i in range(self.fig_count):
             fig,ax=plt.subplots(1,1)
@@ -550,12 +596,17 @@ class Plotter:
             X = self.file_data[0].data[x_name]
             Y = self.file_data[0].data[y_name]
 
-            cp = ax.contourf(X, Y, Z)
+            if self.ifTranspose:
+                cp = ax.contourf(Y, X, Z.T)
+                ax.set_ylabel(x_name)
+                ax.set_xlabel(y_name)
+            else:
+                cp = ax.contourf(X, Y, Z)
+                ax.set_xlabel(x_name)
+                ax.set_ylabel(y_name)
             
             fig.colorbar(cp) # Add a colorbar to a plot
             ax.set_title(title)
-            ax.set_xlabel(x_name)
-            ax.set_ylabel(y_name)
             
             if self.if_manual_plot: plt.show()
             else: plt.close(fig)
diff --git a/plotter/main.py b/plotter/main.py
index a918540..81dc849 100755
--- a/plotter/main.py
+++ b/plotter/main.py
@@ -14,25 +14,25 @@ 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 = [None], var=[None], mval=[None], min_y = None, max_y = None):
+def plot(filename, out = './', oname = [None], var=[None], mval=[None], min_y = None, max_y = None, ifTranspose=False):
     Plot = Plotter()
-    args = Args([filename], Plot.plot, var=var, mval=mval, oname=oname, out=out)
+    args = Args([filename], Plot.plot, var=var, mval=mval, oname=oname, out=out, ifTranspose=ifTranspose)
     Plot.set(args, if_manual_plot=manual_plot, if_save_result=save_result)
     Plot.plot()
 
-def joint_plot(filename, out = './', oname = [None], var=[None], mval=[None], min_y = None, max_y = None):
+def joint_plot(filename, out = './', oname = [None], var=[None], mval=[None], min_y = None, max_y = None, ifTranspose=False):
     Plot = Plotter()
-    args = Args([filename], Plot.joint_plot, var=var, mval=mval, oname=oname, out=out)
+    args = Args([filename], Plot.joint_plot, var=var, mval=mval, oname=oname, out=out, ifTranspose=ifTranspose)
     Plot.set(args, if_manual_plot=manual_plot, if_save_result=save_result)
     Plot.joint_plot()
 
-def multiple_plot(filename, out = './', oname = 'fig.png', var=[None], mval=[None], min_y = None, max_y = None):
+def multiple_plot(filename, out = './', oname = 'fig.png', var=[None], mval=[None], min_y = None, max_y = None, ifTranspose=False):
     Plot = Plotter()
-    args = Args(filename, Plot.multiple_plot, var=var, mval=mval, oname=oname, out=out)
+    args = Args(filename, Plot.multiple_plot, var=var, mval=mval, oname=oname, out=out, ifTranspose=ifTranspose)
     Plot.set(args, if_manual_plot=manual_plot, if_save_result=save_result)
     Plot.multiple_plot()
 
-def ani_plot(filename, out = './', oname = 'fig.gif', var=[None], mval=[None], min_y = None, max_y = None):
+def ani_plot(filename, out = './', oname = 'fig.gif', var=[None], mval=[None], min_y = None, max_y = None, ifTranspose=False):
     pp = str(PurePath(filename).parent) + '/'
     name = str(PurePath(filename).name )
     command = 'find ' + pp + ' -name ' + "'" + name + "'"
@@ -42,17 +42,17 @@ def ani_plot(filename, out = './', oname = 'fig.gif', var=[None], mval=[None], m
     names = natsort.natsorted(out_res,reverse=False)
 
     Plot = Plotter()
-    args = Args(names, Plot.ani_plot, var=var, mval=mval, oname=oname, out=out, min_y=min_y, max_y=max_y)
+    args = Args(names, Plot.ani_plot, var=var, mval=mval, oname=oname, out=out, min_y=min_y, max_y=max_y, ifTranspose=ifTranspose)
     Plot.set(args, if_manual_plot=manual_plot, if_save_result=save_result)
     Plot.ani_plot()
 
-def plot_contour(filename, out = './', oname = [None], var=[None], mval=[None], min_y = None, max_y = None, levels=None):
+def plot_contour(filename, out = './', oname = [None], var=[None], mval=[None], min_y = None, max_y = None, levels=None, ifTranspose=False):
     Plot = Plotter()
-    args = Args([filename], Plot.plot_contour, var=var, mval=mval, oname=oname, out=out, min_y=min_y, max_y=max_y, levels=levels)
+    args = Args([filename], Plot.plot_contour, var=var, mval=mval, oname=oname, out=out, min_y=min_y, max_y=max_y, levels=levels, ifTranspose=ifTranspose)
     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], min_y = None, max_y = None):
+def ani_plot_contour(filename, out = './', oname = [None], var=[None], mval=[None], min_y = None, max_y = None, ifTranspose=False):
     pp = str(PurePath(filename).parent) + '/'
     name = str(PurePath(filename).name )
     command = 'find ' + pp + ' -name ' + "'" + name + "'"
@@ -62,25 +62,25 @@ 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, min_y=min_y, max_y=max_y)
+    args = Args(names, Plot.ani_plot_contour, var=var, mval=mval, oname=oname, out=out, min_y=min_y, max_y=max_y, ifTranspose=ifTranspose)
     Plot.set(args, if_manual_plot=manual_plot, if_save_result=save_result)
     Plot.ani_plot_contour()
 
-def avg_plot(filename, out = './', oname = 'fig.png', var=[None], mval=[None]):
+def avg_plot(filename, out = './', oname = 'fig.png', var=[None], mval=[None], ifTranspose=False):
     Plot = Plotter()
-    args = Args([filename], Plot.avg_plot, var=var, mval=mval, oname=oname, out=out)
+    args = Args([filename], Plot.avg_plot, var=var, mval=mval, oname=oname, out=out, ifTranspose=ifTranspose)
     Plot.set(args, if_manual_plot=manual_plot, if_save_result=save_result)
     Plot.avg_plot()
 
-def slice(filename, plane_type = 'xy', slice_position = 0, out = './', oname = [None], var=[None], mval=[None], min_y = None, max_y = None):
+def slice(filename, plane_type = 'xy', slice_position = 0, out = './', oname = [None], var=[None], mval=[None], min_y = None, max_y = None, ifTranspose=False):
     Plot = Plotter()
-    args = Args([filename], Plot.slice, var=var, mval=mval, oname=oname, out=out, plane_type=plane_type, slice_position=slice_position)
+    args = Args([filename], Plot.slice, var=var, mval=mval, oname=oname, out=out, plane_type=plane_type, slice_position=slice_position, ifTranspose=ifTranspose)
     Plot.set(args, if_manual_plot=manual_plot, if_save_result=save_result)
     Plot.slice()
 
-def plot_diff(filename, ndim, out = './', oname = 'fig.png', var=[None], mval=[None]):
+def plot_diff(filename, ndim, out = './', oname = 'fig.png', var=[None], mval=[None], ifTranspose=False):
     Plot = Plotter()
-    args = Args(filename, Plot.plot_diff, var=var, mval=mval, oname=oname, out=out, ndim=ndim)
+    args = Args(filename, Plot.plot_diff, var=var, mval=mval, oname=oname, out=out, ndim=ndim, ifTranspose=ifTranspose)
     Plot.set(args, if_manual_plot=manual_plot, if_save_result=save_result)
     Plot.plot_diff()
 
-- 
GitLab