Skip to content
Prev Previous commit
Next Next commit
add preset parameter to plotmethod __call__
  • Loading branch information
Chilipp committed Jun 18, 2020
commit b8f58d39dbe3e5fda6a16863b19ec3328527cf2b
21 changes: 19 additions & 2 deletions psyplot/project.py
Original file line number Diff line number Diff line change
Expand Up @@ -441,7 +441,7 @@ def _resolve_preset_path(preset, if_exists=True):
if osp.exists(osp.join(presets_dir, preset)):
return osp.join(presets_dir, preset)
elif osp.exists(osp.join(presets_dir, preset + '.yml')):
return osp.exists(osp.join(presets_dir, preset + '.yml'))
return osp.join(presets_dir, preset + '.yml')
else:
if if_exists:
raise ValueError(
Expand Down Expand Up @@ -477,7 +477,7 @@ def load_preset(self, preset: str, **kwargs):
if method.is_imported:
sp = getattr(self, pm)
if sp:
valid = method.plotter_cls._get_formatoptions()
valid = list(method.plotter_cls._get_formatoptions())
fmts = {key: val for key, val in defaults.items()
if key in valid}
fmts.update(pm_config.get(pm, {}))
Expand Down Expand Up @@ -613,6 +613,7 @@ def close(self, figs=True, data=False, ds=False, remove_only=False):
docstrings.delete_kwargs('ArrayList.from_dataset.other_parameters',
kwargs='kwargs')
docstrings.keep_params('xarray.open_mfdataset.parameters', 'concat_dim')
docstrings.keep_params('Project._load_preset.parameters', 'preset')

@_only_main
@docstrings.get_sectionsf('Project._add_data',
Expand Down Expand Up @@ -727,6 +728,7 @@ def _add_data(self, plotter_cls, filename_or_obj, fmt={}, make_plot=True,
else:
axes = iter(ax)
clear = clear or (isinstance(ax, tuple) and proj is not None)

for arr in sub_project:
plotter_cls(arr, make_plot=(not bool(share) and make_plot),
draw=False, ax=next(axes), clear=clear,
Expand Down Expand Up @@ -1884,6 +1886,7 @@ def __call__(self, *args, **kwargs):
Parameters
----------
%(ProjectPlotter._add_data.parameters.no_plotter_cls)s
%(Project._load_preset.parameters.preset)s

Other Parameters
----------------
Expand All @@ -1894,6 +1897,20 @@ def __call__(self, *args, **kwargs):
-------
%(ProjectPlotter._add_data.returns)s
"""
preset = kwargs.pop('preset', None)
if preset:
preset = self._project_plotter.project._load_preset(preset)
if len(args) >= 2:
fmt = args[1]
else:
fmt = kwargs.setdefault('fmt', {})
for key, val in preset.get(self._method, {}).items():
fmt.setdefault(key, val)
valid = list(self.plotter_cls._get_formatoptions())
for key, val in preset.items():
if key in valid:
fmt.setdefault(key, val)

return self._project_plotter._add_data(
self.plotter_cls, *args, **dict(chain(
[('prefer_list', self._prefer_list),
Expand Down