def __init__(self, eval_data_list, time_point=None, spatial_point=None, ylabel="",
legend_label=None, legend_location=1, figure_size=(10, 6)):
if not ((isinstance(time_point, Number) ^ isinstance(spatial_point, Number)) and \
(isinstance(time_point, type(None)) ^ isinstance(spatial_point, type(None)))):
raise TypeError("Only one kwarg *_point can be passed,"
"which has to be an instance from type numbers.Number")
DataPlot.__init__(self, eval_data_list)
plt.figure(facecolor='white', figsize=figure_size)
plt.ylabel(ylabel)
plt.grid(True)
# TODO: move to ut.EvalData
len_data = len(self._data)
interp_funcs = [si.interp2d(eval_data.input_data[1], eval_data.input_data[0], eval_data.output_data)
for eval_data in eval_data_list]
if time_point is None:
slice_input = [data_set.input_data[0] for data_set in self._data]
slice_data = [interp_funcs[i](spatial_point, slice_input[i]) for i in range(len_data)]
plt.xlabel('$t$')
elif spatial_point is None:
slice_input = [data_set.input_data[1] for data_set in self._data]
slice_data = [interp_funcs[i](slice_input[i], time_point) for i in range(len_data)]
plt.xlabel('$z$')
else:
raise TypeError
if legend_label is None:
show_leg = False
legend_label = [evald.name for evald in eval_data_list]
else:
show_leg = True
for i in range(0, len_data):
plt.plot(slice_input[i], slice_data[i], label=legend_label[i])
if show_leg:
plt.legend(loc=legend_location)
评论列表
文章目录