X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=mjo%2Fplot.py;h=87fccb335103e57dc2d98704c31296cc0aa116aa;hb=64c3510634164b0d8a43c2f034bdcc0c24b281cb;hp=d33012314db2dae46713ca10c2389063acac58ef;hpb=3a61b951df61f4175bcf61700454ed978b63b2ef;p=sage.d.git diff --git a/mjo/plot.py b/mjo/plot.py index d330123..87fccb3 100644 --- a/mjo/plot.py +++ b/mjo/plot.py @@ -1,32 +1,46 @@ +""" +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. -sage_plot = 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 original implementation so that we can call it from +# within mjo_plot. +plot_impl = sage.plot.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' } - - legend_opts = { 'back_color': 'white', - 'shadow': True } - - # 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) - p.set_legend_options(**legend_opts) + default_legend_opts = { 'back_color': 'white', + 'shadow': True } + + # 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 += plot_impl(*args, **kwargs) return p -# Replace both the global `plot` and the one in the module. I am -# unclear about why this is necessary, and don't care too much. -sage.plot.plot.plot = mjo_plot -plot = mjo_plot + +# This way, we don't have to try to replace all of the calls to +# plot(); we just replace the one function that did the actual +# implementation. +sage.plot.plot._plot = mjo_plot