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

Add plot_diff and get_data

parent b7da7925
No related branches found
No related tags found
No related merge requests found
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()
......
......@@ -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
......@@ -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 = {}
......
......@@ -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
......@@ -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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment