From 7d8f066d9850f5ef5129b805b3d000514cc3a44b Mon Sep 17 00:00:00 2001 From: Debolskiy Andrey <and.debol@gmail.com> Date: Thu, 22 Jun 2023 15:14:46 +0300 Subject: [PATCH] Added transpose argument to plots/contour/ani_stuff --- plotter/Args.py | 7 +++++- plotter/Plotter.py | 53 ++++++++++++++++++++++++++++++++++------------ plotter/main.py | 24 ++++++++++----------- 3 files changed, 58 insertions(+), 26 deletions(-) diff --git a/plotter/Args.py b/plotter/Args.py index 2aa1d1a..a820e66 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): + def __init__(self, filename, func, var=None, mval=None, oname=None, out=None, ndim = None, min_y = None, max_y = None, title=None, transpose = None): if out == "plotter_lib_pngs/": print("Output directory name can't be equal to " + out) sys.exit(-1) @@ -16,6 +16,7 @@ class Args: self.title = title self.min_y = min_y self.max_y = max_y + self.transpose = transpose self.CorrVals() @@ -45,6 +46,10 @@ class Args: if None in self.max_y: self.max_y = None + if type(self.transpose) is not list: + self.transpose = [self.transpose] + if None in self.transpose: + self.transpose = None # param_lists = [self.oname, self.var, self.mval, self.min_y, self.max_y] # lens = [] diff --git a/plotter/Plotter.py b/plotter/Plotter.py index 656ce4e..20accd8 100755 --- a/plotter/Plotter.py +++ b/plotter/Plotter.py @@ -28,6 +28,7 @@ class Plotter: self.min_y = None self.max_y = None self.min_max_var_vals = None + self.transpose = None def __check_arg_dim_equiv(self, args): if args.var != None and args.mval != None: @@ -67,6 +68,7 @@ class Plotter: self.title = args.title self.min_y = args.min_y self.max_y = args.max_y + self.transpose = args.transpose self.if_manual_plot = kwargs.get('if_manual_plot', False) self.if_save_result = kwargs.get('if_save_result', True) @@ -103,8 +105,14 @@ class Plotter: 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) + for i in range(len(self.var)): + y_name = self.var[i] + trnsp = self.transpose[i] + if trnsp: + plt.plot(self.file_data[0].data[y_name], self.file_data[0].data[x_name], linewidth=4) + else: + 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') @@ -165,9 +173,14 @@ class Plotter: for datafile in names: fig = plt.figure() plt.ylim([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) + + for i in range(len(self.var)): + y_name = self.var[i] + trnsp = self.transpose[i] + if trnsp: + 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') @@ -224,11 +237,16 @@ class Plotter: vmin = min_val[self.var[i]]; vmax = max_val[self.var[i]]; levels = np.linspace(vmin, vmax, 25) - if self.function == self.plot_diff: - cp = ax.contourf(X, Y, Z) + if self.transpose[i]: + cp = ax.contourf(Y, X, Z.T) + else: + cp = ax.contourf(X, Y, Z) else: - cp = ax.contourf(X, Y, Z, vmin=vmin, vmax=vmax, levels=levels) + if self.transpose[i]: + cp = ax.contourf(Y, X, Z.T, vmin=vmin, vmax=vmax, levels=levels) + 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]])) fig.colorbar(cp) # Add a colorbar to a plot ax.set_title(title) @@ -292,7 +310,9 @@ class Plotter: duration = self.ani_period * len(self.filename) i = 0 - for var in self.var: + vartp = list(range(len(self.var))) + for var, i in zip(self.var, vartp): + if self.title == None: title = var else: @@ -308,7 +328,10 @@ class Plotter: ax.set_ylabel(y_name) Z = data.data[var] - cp = ax.contourf(X, Y, Z, vmin=min_val[var], vmax=max_val[var]) + if self.transpose[i]: + cp = ax.contourf(Y, X, Z.T, vmin=min_val[var], vmax=max_val[var]) + else: + 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) @@ -350,9 +373,13 @@ class Plotter: 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.file_data[0].data, var) - plt.plot(x, avg_data, linewidth=4) + for i in range(len(self.var)): + var = self.var[i] + avg_data = self.__avg(self.file_data[0].data, var[i]) + if self.transpose[i]: + 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') diff --git a/plotter/main.py b/plotter/main.py index af25505..f8b15b6 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], min_y = None, max_y = None): +def plot(filename, out = './', oname = 'fig.png', var=[None], mval=[None], min_y = None, max_y = None, transpose = None): 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, transpose = transpose) 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], min_y = None, max_y = None): +def ani_plot(filename, out = './', oname = 'fig.gif', var=[None], mval=[None], min_y = None, max_y = None, transpose = None): pp = str(PurePath(filename).parent) + '/' name = str(PurePath(filename).name ) command = 'find ' + pp + ' -name ' + "'" + name + "'" @@ -30,17 +30,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, transpose = transpose) 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): +def plot_contour(filename, out = './', oname = [None], var=[None], mval=[None], min_y = None, max_y = None, transpose = None): Plot = Plotter() - args = Args([filename], Plot.plot_contour, var=var, mval=mval, oname=oname, out=out, min_y=min_y, max_y=max_y) + args = Args([filename], Plot.plot_contour, var=var, mval=mval, oname=oname, out=out, min_y=min_y, max_y=max_y, transpose=transpose) 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, transpose = None): pp = str(PurePath(filename).parent) + '/' name = str(PurePath(filename).name ) command = 'find ' + pp + ' -name ' + "'" + name + "'" @@ -50,19 +50,19 @@ 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, transpose = transpose) 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], transpose = None): 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, transpose = None) Plot.set(args, if_manual_plot=manual_plot, if_save_result=save_result) Plot.avg_plot() -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], transpose = None): 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, transpose = None) Plot.set(args, if_manual_plot=manual_plot, if_save_result=save_result) Plot.plot_diff() -- GitLab