Skip to content

Switch to using matplotlib's object-oriented API #367

Open
@willfurnass

Description

@willfurnass

Using the stateful API (functions and attributes of the matplotlib.pyplot module) correctly gets increasingly tricky as a libraries that depends on matplotlib grows larger.

MuMoT's use of matplotlib would be cleaner if something like the following were adoped:

  • For non-multi MuMoTview instances a Figure and Axes pair are instantiated in __init__() using plt.subplots() unless an Axes instance is passed as a param to __init__(), in which case a reference to the associated Figure can be found via the Axes ref. The references to the Figure and Axes are stored as instance attributes (e.g. as self._ax and self._fig).
  • Subsequent plotting and changing of aesthetics in other MuMoTview (or non-multi subclass) methods could be done by calling methods of self._ax or self._fig (rather than the stateful plt.plot/plt.gcf()/plt.gca()/plt.clf()/plt.cla() etc).

My knowledge of how the parts of mumot/view.py fit together is still rather shakey. What issues can others foresee with the above? Would a positive side-effect be that self._figureNum would be redundant? How would the above work with MuMoTmultiViews?

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions