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