Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 24 additions & 10 deletions tools/Python/mccodelib/pqtgfrontend.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@ def get_help_string():
helplines.append('')
helplines.append('q - quit')
helplines.append('p - save png')
if not os.name == 'nt':
helplines.append('s - save svg')
helplines.append('l - log toggle')
helplines.append('s - save svg')
helplines.append('l - log toggle (disables plot from zero)')
helplines.append('0 - plot 1D-curves from zero (disables log)')
helplines.append('t - textinfo toggle')
helplines.append('c - cycle colormap')
helplines.append('F1/h - help')
Expand All @@ -49,21 +49,31 @@ class ViewModel():
It is a kind of viewmodel, originally a log logstate housekeeping object,
extended by various other logstate variables as well.
'''
def __init__(self, log=False, legend=True, sourcedir=None):
def __init__(self, log=False, fromzero=False, legend=True, sourcedir=None):
self.log = log
self.fromzero = fromzero
self.icolormap = 0
self.legend = legend
self.sourcedir = sourcedir
def flip_log(self):
self.log = not self.log
if self.log:
self.fromzero=False
return self.log
def flip_fromzero(self):
self.fromzero = not self.fromzero
if self.fromzero:
self.log=False
return self.fromzero
def inc_colormap(self):
self.icolormap += 1
def flip_legend(self):
self.legend = not self.legend
return self.legend
def logstate(self):
return self.log
def fromzerostate(self):
return self.fromzero
def legendstate(self):
return self.legend
def cmapindex(self):
Expand Down Expand Up @@ -267,7 +277,7 @@ def show_help(self):
def set_keyhandler(self, replot_cb, back_cb, key, modifier):
''' sets a clickhadler according to input '''

def key_handler(ev, replot_cb, back_cb, savefile_cb, flip_log, flip_legend, inc_cmap, expand_sp, debug=False):
def key_handler(ev, replot_cb, back_cb, savefile_cb, flip_log, flip_fromzero, flip_legend, inc_cmap, expand_sp, debug=False):
''' global keypress handler, replot_cb is a function of log '''

if hasattr(QtCore.Qt, "Key"):
Expand All @@ -280,11 +290,13 @@ def key_handler(ev, replot_cb, back_cb, savefile_cb, flip_log, flip_legend, inc_
elif ev.key() == k.Key_L: # l
flip_log()
replot_cb()
elif ev.key() == k.Key_0: # 0
flip_fromzero()
replot_cb()
elif ev.key() == k.Key_P: # p
savefile_cb(format='png')
elif ev.key() == 83: # s
if not os.name == 'nt':
savefile_cb(format='svg')
elif ev.key() == 83: # s
savefile_cb(format='svg')
elif ev.key() == k.Key_T: # t
print("Toggle legend visibility")
flip_legend()
Expand Down Expand Up @@ -313,6 +325,7 @@ def key_handler(ev, replot_cb, back_cb, savefile_cb, flip_log, flip_legend, inc_
savefile_cb = savefile_cb,
back_cb = back_cb,
flip_log = self.viewmodel.flip_log,
flip_fromzero = self.viewmodel.flip_fromzero,
flip_legend = self.viewmodel.flip_legend,
inc_cmap = self.viewmodel.inc_colormap,
expand_sp = expand_sp)
Expand Down Expand Up @@ -411,10 +424,11 @@ def click_handler(event, node_list, node_cb, click, mod, debug=False):
event, node_list=node_list, node_cb=node_cb, click=click, mod=modifier))


def get_plot_func_opts(self, log, legend, icolormap, verbose, fontsize, cbmin=None, cbmax=None):
def get_plot_func_opts(self, fromzero, log, legend, icolormap, verbose, fontsize, cbmin=None, cbmax=None):
''' returns a dict for holding the plot options relevant for this plotting frontend '''
d = {}
d['log'] = log
d['fromzero'] = fromzero
d['legend'] = legend
d['icolormap'] = icolormap
d['verbose'] = verbose
Expand Down Expand Up @@ -470,7 +484,7 @@ def get_golden_rowlen(n):
else:
cbmin, cbmax = self.get_sweep_multiplot_colorbar_limits(node)

options = self.get_plot_func_opts(
options = self.get_plot_func_opts(self.viewmodel.fromzerostate(),
self.viewmodel.logstate(), self.viewmodel.legendstate(), self.viewmodel.cmapindex(),
verbose, fontsize, cbmin, cbmax)
view_box, plt_itm = self.plot_func(node, i, plt, options)
Expand Down
9 changes: 6 additions & 3 deletions tools/Python/mcplot/pyqtgraph/plotfuncs.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ def plot(node, i, plt, opts):
data = node.getdata_idx(i)

if type(data) is Data1D:
view_box = plot_Data1D(data, plt, log=opts['log'], legend=opts['legend'], icolormap=opts['icolormap'],
view_box = plot_Data1D(data, plt, fromzero=opts['fromzero'], log=opts['log'], legend=opts['legend'], icolormap=opts['icolormap'],
verbose=opts['verbose'], fontsize=opts['fontsize'])
return view_box, plt
elif type(data) is Data2D:
Expand Down Expand Up @@ -78,7 +78,7 @@ def plot_Data0D(data, plt, log=False, legend=True, icolormap=0, verbose=True, fo
return plt.getViewBox()


def plot_Data1D(data, plt, log=False, legend=True, icolormap=0, verbose=True, fontsize=10):
def plot_Data1D(data, plt, log=False, fromzero=False, legend=True, icolormap=0, verbose=True, fontsize=10):
''' create a plotItem and populate it with data, Data1D '''
# data
x = np.array(data.xvals).astype(float)
Expand All @@ -100,6 +100,9 @@ def plot_Data1D(data, plt, log=False, legend=True, icolormap=0, verbose=True, fo
plt.setLogMode(y=False)
else:
plt.setLogMode(y=False)
if fromzero:
yp=np.append(y,0)
plt.setYRange(np.min(yp), np.max(y), padding=0)

plt.setXRange(np.min(x), np.max(x), padding=0)

Expand Down Expand Up @@ -199,7 +202,7 @@ def plot_Data2D(data, plt, log=False, legend=True, icolormap=0, verbose=False, f
ymin = np.min(idx)/10
if ymin <= 0:
ymin=100*sys.float_info.min # Small, finite value.
dataset[dataset<=0] = ymin
dataset[dataset<=0] = ymin
dataset = np.reshape(dataset, datashape)
dataset = np.log10(dataset)
else:
Expand Down