Skip to content
Snippets Groups Projects
Commit bfac8439 authored by 数学の武士's avatar 数学の武士
Browse files

Add min max vals ani plot vals

parent 8335e76c
No related branches found
No related tags found
No related merge requests found
import sys
import numpy as np
class Args:
def __init__(self, filename, func, var=[None], mval=[None], oname=[None], out=[None], ndim = None):
def __init__(self, filename, func, var=None, mval=None, oname=None, out=None, ndim = None, min_y = None, max_y = None, title=None):
if out == "plotter_lib_pngs/":
print("Output directory name can't be equal to " + out)
sys.exit(-1)
......@@ -13,6 +13,9 @@ class Args:
self.out = out
self.func = func
self.ndim = ndim
self.title = title
self.min_y = min_y
self.max_y = max_y
self.CorrVals()
......@@ -31,3 +34,33 @@ class Args:
self.mval = [self.mval]
if None in self.mval:
self.mval = None
if type(self.min_y) is not list:
self.min_y = [self.min_y]
if None in self.min_y:
self.min_y = None
if type(self.max_y) is not list:
self.max_y = [self.max_y]
if None in self.max_y:
self.max_y = None
# param_lists = [self.oname, self.var, self.mval, self.min_y, self.max_y]
# lens = []
# for param in param_lists:
# if param == None:
# continue
# if type(param) is not list:
# lens.append(1)
# else:
# lens.append(len(param))
# if len(lens) != 0:
# lens = np.array(lens, dtype = int)
# for i in range(1, len(lens)):
# if np.equal(lens[0], lens[i]).any() != True:
# print("Args fail")
# sys.exit(-1)
\ No newline at end of file
......@@ -12,14 +12,20 @@ class Plotter:
ani_pngs_dir = "plotter_lib_pngs/"
def __init__(self):
self.filename = ""
self.out = ""
self.oname = ""
self.var = ""
self.mval = ""
self.function = ""
self.variable_names = ""
self.filename = None
self.out = None
self.oname = None
self.var = None
self.mval = None
self.function = None
self.file_column_names = None
self.title = None
self.file_data = None
self.plt_max_val = None
self.plt_min_val = None
self.min_y = None
self.max_y = None
self.min_max_var_vals = None
def __check_arg_dim_equiv(self, args):
if args.var != None and args.mval != None:
......@@ -30,7 +36,7 @@ class Plotter:
def __get_variable_names(self):
var_names = []
for d in self.data:
for d in self.file_data:
names = d.variable_names
var_names.append(np.array(names, dtype=object))
......@@ -44,13 +50,24 @@ class Plotter:
print("Undefined variable names")
sys.exit(-1)
self.variable_names = var_names[0]
self.file_column_names = var_names[0]
def set(self, args, **kwargs):
self.__check_arg_dim_equiv(args)
self.filename = args.filename
self.ndim = args.ndim
self.out = args.out
self.oname = args.oname
self.var = args.var
self.mval = args.mval
self.function = args.func
self.title = args.title
self.min_y = args.min_y
self.max_y = args.max_y
self.if_manual_plot = kwargs.get('if_manual_plot', False)
self.if_save_result = kwargs.get('if_save_result', True)
pData = []
......@@ -59,17 +76,10 @@ class Plotter:
p.get_variable_names()
pData.append(p)
self.data = copy.deepcopy(pData)
self.file_data = copy.deepcopy(pData)
self.__get_variable_names()
if args.func != self.dump:
self.out = args.out
self.oname = args.oname
self.var = args.var
self.mval = args.mval
self.function = args.func
self.if_manual_plot = kwargs.get('if_manual_plot', False)
self.if_save_result = kwargs.get('if_save_result', True)
if args.func == self.plot or args.func == self.ani_plot:
self.ndim = 1
......@@ -78,21 +88,21 @@ class Plotter:
elif args.func == self.avg_plot:
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))]
if self.var == None and len(self.file_column_names) != 0:
self.var = [self.file_column_names[i] for i in range(self.ndim, len(self.file_column_names))]
for p in self.data:
for p in self.file_data:
p.process_file(self.ndim, self.var, self.mval)
self.fig_count = len(self.var)
def __plot(self):
os.system("mkdir -p " + self.out)
x_name = self.variable_names[0]
x_name = self.file_column_names[0]
fig = plt.figure()
for y_name in self.var:
plt.plot(self.data[0].data[x_name], self.data[0].data[y_name], linewidth=4)
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')
......@@ -101,6 +111,36 @@ class Plotter:
else: plt.close(fig)
if self.if_save_result: fig.savefig(self.out + self.oname[0])
def __get_min_max_ax(self):
min_max_var_vals = {var : [] for var in self.var}
i = 0
for var in self.var:
max_val = self.file_data[i].data[var][0]
min_val = self.file_data[i].data[var][0]
for data in self.file_data:
maval = np.max(data.data[var])
mival = np.min(data.data[var])
if maval > max_val:
max_val = maval
if mival < min_val:
min_val = mival
min_max_var_vals[var] = np.array([min_val, max_val])
i += 1
max_vals = np.array([min_max_var_vals[var][1] for var in self.var])
min_vals = np.array([min_max_var_vals[var][0] for var in self.var])
max_val = np.max(max_vals)
min_val = np.min(min_vals)
self.min_max_var_vals = np.array([min_val, max_val])
def __ani_plot(self):
if self.if_save_result:
png_names = []
......@@ -108,20 +148,25 @@ class Plotter:
os.system("mkdir -p " + self.ani_pngs_dir)
names = natsort.natsorted(self.filename,reverse=False)
x_name = self.variable_names[0]
x_name = self.file_column_names[0]
data_i = 0
# max_val = -1e9
# min_val = 1e9
if self.max_y == None:
max_val = self.min_max_var_vals[1]
else:
max_val = self.max_y[0]
# for y_name in self.var:
# local_max = np.
if self.min_y == None:
min_val = self.min_max_var_vals[0]
else:
min_val = self.min_y[0]
for datafile in names:
fig = plt.figure()
plt.ylim([min_val, max_val])
for y_name in self.var:
plt.plot(self.data[data_i].data[x_name], self.data[data_i].data[y_name], linewidth=4)
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')
......@@ -143,8 +188,8 @@ class Plotter:
def __plot_contour(self):
os.system("mkdir -p " + self.out)
x_name = self.variable_names[0]
y_name = self.variable_names[1]
x_name = self.file_column_names[0]
y_name = self.file_column_names[1]
if self.oname == None:
fig_names = self.var
......@@ -161,9 +206,9 @@ class Plotter:
else:
title = self.title
X = self.data[0].data[x_name]
Y = self.data[0].data[y_name]
Z = self.data[0].data[self.var[i]]
X = self.file_data[0].data[x_name]
Y = self.file_data[0].data[y_name]
Z = self.file_data[0].data[self.var[i]]
cp = ax.contourf(X, Y, Z)
fig.colorbar(cp) # Add a colorbar to a plot
......@@ -177,13 +222,14 @@ class Plotter:
def __get_min_max_bar(self):
self.filename = natsort.natsorted(self.filename,reverse=False)
self.vals = {var : [] for var in self.var}
self.min_max_var_vals = {var : [] for var in self.var}
i = 0
for var in self.var:
max_val = -1e9
min_val = 1e9
max_val = self.file_data[i].data[var][0][0]
min_val = self.file_data[i].data[var][0][0]
for data in self.data:
for data in self.file_data:
maval = np.max(data.data[var])
mival = np.min(data.data[var])
......@@ -192,7 +238,9 @@ class Plotter:
if mival < min_val:
min_val = mival
self.vals[var] = np.array([min_val, max_val])
self.min_max_var_vals[var] = np.array([min_val, max_val])
i += 1
def __ani_plot_contour(self):
if self.if_save_result:
......@@ -200,8 +248,8 @@ class Plotter:
os.system("mkdir -p " + self.out)
os.system("mkdir -p " + self.ani_pngs_dir)
x_name = self.variable_names[0]
y_name = self.variable_names[1]
x_name = self.file_column_names[0]
y_name = self.file_column_names[1]
if self.oname == None:
fig_names = self.var
......@@ -210,8 +258,20 @@ class Plotter:
fig_names = self.oname
fig_end = ""
X = self.data[0].data[x_name]
Y = self.data[0].data[y_name]
X = self.file_data[0].data[x_name]
Y = self.file_data[0].data[y_name]
if self.max_y == None:
max_val = {var:self.min_max_var_vals[var][1] for var in self.var}
else:
max_val = {var:self.max_y[i] for var, i in zip(self.var, list(range(len(self.var))))}
if self.min_y == None:
min_val = {var:self.min_max_var_vals[var][0] for var in self.var}
else:
min_val = {var:self.min_y[i] for var, i in zip(self.var, list(range(len(self.var))))}
# print(max_val)
i = 0
for var in self.var:
......@@ -223,14 +283,14 @@ class Plotter:
counter = 0
png_names = []
for data in self.data:
for data in self.file_data:
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=self.vals[var][0], vmax=self.vals[var][1])
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)
......@@ -269,11 +329,11 @@ class Plotter:
def __avg_plot(self):
os.system("mkdir -p " + self.out)
fig = plt.figure()
x_name = self.variable_names[2]
x = self.data[0].data[x_name]
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.data[0].data, var)
avg_data = self.__avg(self.file_data[0].data, var)
plt.plot(x, avg_data, linewidth=4)
plt.legend(self.var)
......@@ -284,28 +344,28 @@ class Plotter:
if self.if_save_result: fig.savefig(self.out + self.oname[0])
def __dump(self):
for variable_name in self.variable_names:
for variable_name in self.file_column_names:
print(variable_name, end=' ')
print('\n')
def __plot_diff(self):
for name in self.variable_names:
if self.data[0].data[name].shape != self.data[1].data[name].shape:
for name in self.file_column_names:
if self.file_data[0].data[name].shape != self.file_data[1].data[name].shape:
print("Data dimensions do not match")
sys.exit(-1)
diff = {}
for name in self.var:
diff[name] = self.data[0].data[name] - self.data[1].data[name]
diff[name] = self.file_data[0].data[name] - self.file_data[1].data[name]
dim_variables = list(set(self.variable_names) - set(self.var))
dim_variables = list(set(self.file_column_names) - set(self.var))
for name in dim_variables:
diff[name] = self.data[0].data[name]
diff[name] = self.file_data[0].data[name]
diffProcData = ProcData()
diffProcData.data = diff
self.data = [diffProcData]
self.file_data = [diffProcData]
basename0 = os.path.basename(self.filename[0])
basename1 = os.path.basename(self.filename[1])
......@@ -323,7 +383,7 @@ class Plotter:
self.__plot()
def ani_plot(self):
self.__get_min_max_bar()
self.__get_min_max_ax()
self.__ani_plot()
def avg_plot(self):
......@@ -341,6 +401,6 @@ class Plotter:
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_data = {name : copy.deepcopy(data.data) for name, data in zip(filenames, self.file_data)}
return_data = [copy.deepcopy(data.data) for data in self.file_data]
return return_data
\ No newline at end of file
......@@ -109,7 +109,6 @@ class ProcData:
column_names = self.var
if self.mval != None:
print(self.mval)
for col, abs_val in zip(column_names, self.mval):
check_variable_idx = np.where(self.variable_names == col)[0][0]
idx = np.where(np.abs(file_data[check_variable_idx]) > abs_val)[0]
......
......@@ -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]):
def plot(filename, out = './', oname = 'fig.png', var=[None], mval=[None], min_y = None, max_y = None):
Plot = Plotter()
args = Args([filename], Plot.plot, var=var, mval=mval, oname=oname, out=out)
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]):
def ani_plot(filename, out = './', oname = 'fig.gif', var=[None], mval=[None], min_y = None, max_y = None):
pp = str(PurePath(filename).parent) + '/'
name = str(PurePath(filename).name )
command = 'find ' + pp + ' -name ' + "'" + name + "'"
......@@ -30,7 +30,7 @@ def ani_plot(filename, out = './', oname = 'fig.gif', var=[None], mval=[None]):
names = natsort.natsorted(out_res,reverse=False)
Plot = Plotter()
args = Args(names, Plot.ani_plot, var=var, mval=mval, oname=oname, out=out)
args = Args(names, Plot.ani_plot, var=var, mval=mval, oname=oname, out=out, min_y=min_y, max_y=max_y)
Plot.set(args, if_manual_plot=manual_plot, if_save_result=save_result)
Plot.ani_plot()
......@@ -40,7 +40,7 @@ def plot_contour(filename, out = './', oname = [None], var=[None], mval=[None]):
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]):
def ani_plot_contour(filename, out = './', oname = [None], var=[None], mval=[None], min_y = None, max_y = None):
pp = str(PurePath(filename).parent) + '/'
name = str(PurePath(filename).name )
command = 'find ' + pp + ' -name ' + "'" + name + "'"
......@@ -50,7 +50,7 @@ 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)
args = Args(names, Plot.ani_plot_contour, var=var, mval=mval, oname=oname, out=out, min_y=min_y, max_y=max_y)
Plot.set(args, if_manual_plot=manual_plot, if_save_result=save_result)
Plot.ani_plot_contour()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment