Skip to content

Rethink the display mechanisms #269

Closed
@leouieda

Description

@leouieda

Description of the desired feature

Currently, there many ways of displaying a PyGMT figure:

  • Calling Figure.show() in the notebook returns an IPython PNG display object for the jupyter notebook
  • Putting the Figure object at the end of a notebook cell displays the figure as PNG
  • Calling Figure.show(external=True) will open a preview in an external PDF viewer or the browser. The external viewer is non-blocking so this doesn't work for a script.
  • Calling Figure.savefig(..., show=True) will save the figure and open it on an external viewer

This is not ideal. It would be better to have:

  • Calling Figure.show() opens a preview of the figure and halts the Python process until the viewer is closed. It can also return self so that if it's called at the end of a notebook cell it would get displayed on the notebook as well.
  • Putting the Figure at the end of a notebook cell displays a PNG preview.
  • Having some way of tell Figure.show() to not open the viewer. This is required when using a notebook or when building the docs (we don't want windows opening when we build the gallery or tutorials). This can be done through a function pygmt.enable_notebook which would set a flag to tell show not to do anything and/or through an environment variable PYGMT_DISPLAY which can be set to none or other options that the user might want. Ideally, we should have both. The env variable will be useful when building the docs.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions