diff --git a/plotter/Args.py b/plotter/Args.py index 4a215ec290945a4d3a8d7d995e98484cea53ea4e..e52ec38366de994dbe1c6639e3f0502a9c95d4d8 100644 --- a/plotter/Args.py +++ b/plotter/Args.py @@ -1,11 +1,12 @@ class Args: - def __init__(self, filename, func, var=[None], mval=[None], oname=[None], out=[None]): + def __init__(self, filename, func, var=[None], mval=[None], oname=[None], out=[None], ndim = None): self.filename = filename self.var = var self.mval = mval self.oname = oname self.out = out self.func = func + self.ndim = ndim self.CorrVals() diff --git a/plotter/Plotter.py b/plotter/Plotter.py index 48bbe3e182c50c6ade3a4d069f62b99f63b35ded..2f69efbf2303e6a3d2af607fd18c348dcd58d20a 100755 --- a/plotter/Plotter.py +++ b/plotter/Plotter.py @@ -19,6 +19,7 @@ class Plotter: self.mval = "" self.function = "" self.variable_names = "" + self.title = None def __check_arg_dim_equiv(self, args): if args.var != None and args.mval != None: @@ -49,6 +50,7 @@ class Plotter: def set(self, args, **kwargs): self.__check_arg_dim_equiv(args) self.filename = args.filename + self.ndim = args.ndim pData = [] @@ -57,7 +59,7 @@ class Plotter: p.get_variable_names() pData.append(p) - self.data = copy.deepcopy(pData) + self.data = copy.deepcopy(pData) self.__get_variable_names() if args.func != self.dump: @@ -70,32 +72,20 @@ class Plotter: self.if_save_result = kwargs.get('if_save_result', True) if args.func == self.plot or args.func == self.ani_plot: - ndim = 1 - if self.var == None and len(self.variable_names) != 0: - self.var = [self.variable_names[i] for i in range(ndim, len(self.variable_names))] - for p in self.data: - p.process_file(ndim, self.var, self.mval) - + self.ndim = 1 elif args.func == self.plot_contour or args.func == self.ani_plot_contour: - ndim = 2 - if self.var == None and len(self.variable_names) != 0: - self.var = [self.variable_names[i] for i in range(ndim, len(self.variable_names))] - for p in self.data: - p.process_file(ndim, self.var, self.mval) - + self.ndim = 2 elif args.func == self.avg_plot: - ndim = 3 - if self.var == None and len(self.variable_names) != 0: - self.var = [self.variable_names[i] for i in range(ndim, len(self.variable_names))] - for p in self.data: - p.process_file(ndim, self.var, self.mval) - - if self.var == None: - self.fig_count = len(self.variable_names) - ndim - else: - self.fig_count = len(self.var) + 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))] + + for p in self.data: + p.process_file(self.ndim, self.var, self.mval) + self.fig_count = len(self.var) - def __plot_plt(self): + def __plot(self): os.system("mkdir -p " + self.out) x_name = self.variable_names[0] @@ -121,6 +111,12 @@ class Plotter: x_name = self.variable_names[0] data_i = 0 + # max_val = -1e9 + # min_val = 1e9 + + # for y_name in self.var: + # local_max = np. + for datafile in names: fig = plt.figure() @@ -159,7 +155,11 @@ class Plotter: for i in range(self.fig_count): fig,ax=plt.subplots(1,1) - title = self.var[i] + + if self.title == None: + title = self.var[i] + else: + title = self.title X = self.data[0].data[x_name] Y = self.data[0].data[y_name] @@ -215,7 +215,11 @@ class Plotter: i = 0 for var in self.var: - title = var + if self.title == None: + title = var + else: + title = self.title + counter = 0 png_names = [] @@ -285,23 +289,41 @@ class Plotter: print('\n') def __plot_diff(self): - if self.data[0].data.shape != self.data[1].data.shape: - print("Data dimensions do not match") - sys.exit(-1) + for name in self.variable_names: + if self.data[0].data[name].shape != self.data[1].data[name].shape: + print("Data dimensions do not match") + sys.exit(-1) diff = {} - diff[self.var] = self.data[0][self.var] - self.data[1][self.var] + for name in self.var: + diff[name] = self.data[0].data[name] - self.data[1].data[name] + dim_variables = list(set(self.variable_names) - set(self.var)) + for name in dim_variables: + diff[name] = self.data[0].data[name] + diffProcData = ProcData() + diffProcData.data = diff + self.data = [diffProcData] + + basename0 = os.path.basename(self.filename[0]) + basename1 = os.path.basename(self.filename[1]) + self.title = str(basename0) + ' - ' + str(basename1) + + if self.ndim == 1: + self.__plot() + elif self.ndim == 2: + self.__plot_contour() def dump(self): self.__dump() def plot(self): - self.__plot_plt() + self.__plot() def ani_plot(self): + self.__get_min_max_bar() self.__ani_plot() def avg_plot(self): @@ -315,4 +337,10 @@ class Plotter: self.__ani_plot_contour() def plot_diff(self): - self.__plot_diff() \ No newline at end of file + self.__plot_diff() + + 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 return_data \ No newline at end of file diff --git a/plotter/ProcData.py b/plotter/ProcData.py index c340654194ee2a214ad0fc489f1cea0b30b98266..b398062ae76b3651ad23b5cc7f20d962715a9b3b 100755 --- a/plotter/ProcData.py +++ b/plotter/ProcData.py @@ -4,7 +4,7 @@ import numpy as np from .binSubfunctions import * class ProcData: - def __init__(self, filename): + def __init__(self, filename=None): self.filename = filename self.data = {} self.nse_read_bin_data = {} diff --git a/plotter/__init__.py b/plotter/__init__.py index 7c9b81a9840b4c48248fcbb9f38118069cdc8811..6f6cd904dbe1fcb47fa7a0ae93806d1634f5b0f8 100755 --- a/plotter/__init__.py +++ b/plotter/__init__.py @@ -6,4 +6,6 @@ from .main import ani_plot from .main import plot_contour from .main import ani_plot_contour from .main import avg_plot +from .main import plot_diff +from .main import get_data diff --git a/plotter/main.py b/plotter/main.py index d18e2b2d85f40171ca823186e1c5e21521fdf40b..5680c7ee3dd9792f891dd150f0aa5e003d103b67 100755 --- a/plotter/main.py +++ b/plotter/main.py @@ -4,7 +4,7 @@ from pathlib import PurePath import natsort import os -manual_plot=True +manual_plot=False save_result=True def dump(filename, var=[None], mval=[None]): @@ -58,4 +58,17 @@ def avg_plot(filename, out = './', oname = 'fig.png', var=[None], mval=[None]): Plot = Plotter() args = Args([filename], Plot.avg_plot, var=var, mval=mval, oname=oname, out=out) Plot.set(args, if_manual_plot=manual_plot, if_save_result=save_result) - Plot.avg_plot() \ No newline at end of file + Plot.avg_plot() + +def plot_diff(filename, out = './', oname = 'fig.png', var=[None], mval=[None], ndim = 1): + Plot = Plotter() + args = Args(filename, Plot.plot_diff, var=var, mval=mval, oname=oname, out=out, ndim=ndim) + Plot.set(args, if_manual_plot=manual_plot, if_save_result=save_result) + Plot.plot_diff() + +def get_data(filename, ndim): + Plot = Plotter() + args = Args([filename], Plot.get_data, ndim=ndim) + Plot.set(args, if_manual_plot=manual_plot, if_save_result=save_result) + data = Plot.get_data() + return data \ No newline at end of file