Skip to content

Make pyplot Configurable #51

@EntilZha

Description

@EntilZha

I've been giving a shot to auditorium for presentations and like it so far, but there are a few things that it would be great to make configurable. I'd love to submit a PR, but wanted to check on preferred approach to implementing feature.

The issue I'm trying to solve is that when using plotnine, many figures (especially legends) get cropped out. I traced this down to that pyplot https://github.com/apiad/auditorium/blob/master/auditorium/show.py#L340 calls plt.tight_layout(). On the other hand, plotnine does not call that, but makes a call like plt.savefig(filename, bbox_inches='tight' (https://plotnine.readthedocs.io/en/stable/_modules/plotnine/ggplot.html#ggplot.save).

I'd propose something like:

  1. Add a parameter to pyplot like savefig_args and change the savefig call to plt.savefig(buffer, format=fmt, **savefig_args)
  2. Add a parameter tight_layout=True (or False) so only call plt.tight_layout() if it is True

Combined, this would make it so that I can display plotnine plots as they're intended to look, without monkey patching the pyplot call. Another possibility is in addition to (1)/(2), add argument on Show where the defaults can be set, although a similar thing could be accomplished in user code like

def myplot(ctx, plt):
    ctx.pyplot(plt, savefig_args={}, tight_layout=False)

def myslide(ctx):
    myplot(ctx, someplot)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions