diff --git a/plotter/Args.py b/plotter/Args.py index 2aa1d1a33c8deddf5af5fce42247932cb2d38cfe..a820e66490b070069b8e92a8b0ae71ec280e0859 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 656ce4e01e93eb36d195fbd146f99a35de097c3e..20accd89d5512536049fe73fd8277f69719626e2 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 af25505b4529ab2bc13fdca97504a6542cc06ac2..f8b15b6a50f831ffdb9ec3331fa8855c1c67ac71 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()