From 506ce3431f3a3b230c5976c192b8144668e9176a Mon Sep 17 00:00:00 2001 From: Michael Orlitzky Date: Thu, 10 May 2012 22:16:28 -0400 Subject: [PATCH] Finally get the plot defaults to behave (maybe). --- mjo/plot.py | 44 +++++++++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/mjo/plot.py b/mjo/plot.py index 0eaf079..b301e30 100644 --- a/mjo/plot.py +++ b/mjo/plot.py @@ -1,38 +1,48 @@ +""" +Plotting helpers. + + * We set the default tick_formatter to 'latex'. + + * We replace the plot() function with our own version that sets some + default legend options. + +""" + from sage.all import * -# Save the default so that we can call it within mjo_plot. +# Graphics.SHOW_OPTIONS contains the default options that will be +# passed to show(). It already handles merging the user-specified +# options, so we just tap into that power. +show_opts = sage.plot.graphics.Graphics.SHOW_OPTIONS +show_opts['tick_formatter'] = 'latex' + +# Save the default plot() function so that we can call it within +# mjo_plot and not die of recursion. sage_plot = plot def mjo_plot(*args, **kwargs): """ Replacement for the default plot function. - - Use the 'latex' tick formatter. - - If there's a legend, set the background color to 'white' and give it a drop shadow. """ - plot_opts = { 'tick_formatter': 'latex' } - - # Merge the user's plot options with mine. The ones given as - # kwargs should override the defaults! - plot_opts.update(kwargs) - kwargs = plot_opts - - p = sage_plot(*args, **kwargs) - - # Merge the user's legend options with mine. The ones passed to us - # should override the defaults! default_legend_opts = { 'back_color': 'white', 'shadow': True } - default_legend_opts.update(p._Graphics__legend_opts) - p._Graphics__legend_opts = default_legend_opts + + # Create an empty plot using the default options. + p = Graphics() + p.set_legend_options(**default_legend_opts) + + # After trac #12936, this should propagate those options. + p += sage_plot(*args, **kwargs) return p + # Replace both the global `plot` and the ones in the modules. I am # unclear about why this is necessary, and don't care too much. +plot = mjo_plot sage.plot.plot.plot = mjo_plot sage.plot.all.plot = mjo_plot -plot = mjo_plot -- 2.44.2