Ticket #12974: trac_12974-fix_graphics_attributes_and_reorder_args.patch

File trac_12974-fix_graphics_attributes_and_reorder_args.patch, 26.8 KB (added by ppurka, 9 years ago)

apply this first to devel/sage

  • sage/plot/animate.py

    # HG changeset patch
    # User Punarbasu Purkayastha <ppurka@gmail.com>
    # Date 1337245532 -28800
    # Node ID f437d9b9b70e5871a6b5b2b963d48c3b8f70fe87
    # Parent  aa148c3c0d7b06fd049b9e845eebeda2421d32bf
    change all .__ attributes to ._
    This ensures that the Graphics class can be inherited.
    Also, alphabetically arrange the arguments in all places.
    This makes it easier to modify the arguments in the future.
    
    diff --git a/sage/plot/animate.py b/sage/plot/animate.py
    a b  
    7676    TESTS: This illustrates that ticket #2066 is fixed (setting axes
    7777    ranges when an endpoint is 0)::
    7878   
    79         sage: animate([plot(sin, -1,1)], xmin=0, ymin=0)._Animation__kwds['xmin']
     79        sage: animate([plot(sin, -1,1)], xmin=0, ymin=0)._kwds['xmin']
    8080        0
    8181       
    8282    We check that Trac #7981 is fixed::
     
    105105            w.append(x)
    106106        if len(w) == 0:
    107107            w = [sage.plot.graphics.Graphics()]
    108         self.__frames = w
    109         self.__kwds = kwds
     108        self._frames = w
     109        self._kwds = kwds
    110110
    111111    def _combine_kwds(self, *kwds_tuple):
    112112        """
     
    162162            sage: a[3:7].show() # optional -- ImageMagick
    163163        """
    164164        if isinstance(i, slice):
    165             return Animation(self.__frames[i], **self.__kwds)
     165            return Animation(self._frames[i], **self._kwds)
    166166        else:
    167             return self.__frames[i]
     167            return self._frames[i]
    168168
    169169    def _repr_(self):
    170170        """
     
    179179            sage: a._repr_()
    180180            'Animation with 10 frames'
    181181        """
    182         return "Animation with %s frames"%(len(self.__frames))
     182        return "Animation with %s frames"%(len(self._frames))
    183183
    184184    def __add__(self, other):
    185185        """
     
    202202        if not isinstance(other, Animation):
    203203            other = Animation(other)
    204204           
    205         kwds = self._combine_kwds(self.__kwds, other.__kwds)
     205        kwds = self._combine_kwds(self._kwds, other._kwds)
    206206
    207207        #Combine the frames
    208         m = max(len(self.__frames), len(other.__frames))
    209         frames = [a+b for a,b in zip(self.__frames, other.__frames)]
    210         frames += self.__frames[m:] + other.__frames[m:]
     208        m = max(len(self._frames), len(other._frames))
     209        frames = [a+b for a,b in zip(self._frames, other._frames)]
     210        frames += self._frames[m:] + other._frames[m:]
    211211               
    212212        return Animation(frames, **kwds)
    213213
     
    232232        if not isinstance(other, Animation):
    233233            other = Animation(other)
    234234
    235         kwds = self._combine_kwds(self.__kwds, other.__kwds)
     235        kwds = self._combine_kwds(self._kwds, other._kwds)
    236236       
    237         return Animation(self.__frames + other.__frames, **kwds)
     237        return Animation(self._frames + other._frames, **kwds)
    238238
    239239    def png(self, dir=None):
    240240        """
     
    249249            ['00000000.png', '00000001.png', '00000002.png', '00000003.png']
    250250        """
    251251        try:
    252             return self.__png_dir
     252            return self._png_dir
    253253        except AttributeError:
    254254            pass
    255255        d = sage.misc.misc.tmp_dir()
    256         G = self.__frames
    257         for i, frame in enumerate(self.__frames):
     256        G = self._frames
     257        for i, frame in enumerate(self._frames):
    258258            filename = '%s/%s'%(d,sage.misc.misc.pad_zeros(i,8))
    259             frame.save(filename + '.png', **self.__kwds)
    260         self.__png_dir = d
     259            frame.save(filename + '.png', **self._kwds)
     260        self._png_dir = d
    261261        return d
    262262
    263263    def graphics_array(self, ncols=3):
     
    288288            Graphics Array of size 2 x 2
    289289            sage: g.show('sage.png')         # optional
    290290        """
    291         n = len(self.__frames)
     291        n = len(self._frames)
    292292        ncols = int(ncols)
    293         return plot.graphics_array(self.__frames, int(n/ncols),  ncols)
     293        return plot.graphics_array(self._frames, int(n/ncols),  ncols)
    294294
    295295    def gif(self, delay=20, savefile=None, iterations=0, show_path=False,
    296296            use_ffmpeg=False):
  • sage/plot/colors.py

    diff --git a/sage/plot/colors.py b/sage/plot/colors.py
    a b  
    409409            RGB color (0.8235294117647058, 0.4117647058823529, 0.11764705882352941)
    410410        """
    411411        if g is None and b is None:
    412             self.__rgb = rgbcolor(r)
     412            self._rgb = rgbcolor(r)
    413413        else:
    414             self.__rgb = rgbcolor((r, g, b), space=space)
     414            self._rgb = rgbcolor((r, g, b), space=space)
    415415
    416416    def __repr__(self):
    417417        """
     
    428428            sage: Color(1, 0.5, 1/16, space='hsl').__repr__()
    429429            'RGB color (0.09375, 0.03125, 0.03125)'
    430430        """
    431         return "RGB color %s" % (self.__rgb, )
     431        return "RGB color %s" % (self._rgb, )
    432432
    433433    def blend(self, color, fraction=0.5):
    434434        """
     
    472472        """
    473473        fraction = float(fraction)
    474474        if isinstance(color, Color):
    475             color = color.__rgb
     475            color = color._rgb
    476476        if isinstance(color, (list, tuple)) and len(color) == 3:
    477477            color = map(float, color)
    478478            return Color(rgbcolor([(1 - fraction) * a + fraction * b
    479                                    for a, b in zip(self.__rgb, color)]))
     479                                   for a, b in zip(self._rgb, color)]))
    480480        raise TypeError("%s must be a Color or float-convertible 3-tuple/list" % (color, ))
    481481
    482482    def __add__(self, right):
     
    572572            RGB color (0.764705882352942, 0.1529411764705877, 0.1529411764705877)
    573573        """
    574574        right = float(right)
    575         return Color([x * right for x in self.__rgb])
     575        return Color([x * right for x in self._rgb])
    576576
    577577    def __rmul__(self, left):
    578578        """
     
    707707            sage: vector(maroon) == vector(Color(maroon)) == vector(Color('maroon'))
    708708            True
    709709        """
    710         return iter(self.__rgb)
     710        return iter(self._rgb)
    711711
    712712    def __getitem__(self, i):
    713713        """
     
    736736            ...
    737737            IndexError: tuple index out of range
    738738        """
    739         return self.__rgb[i]
     739        return self._rgb[i]
    740740
    741741    def rgb(self):
    742742        """
     
    761761            sage: Color(1, 0.7, 0.9, space='hsv').rgb()
    762762            (0.9, 0.2700000000000001, 0.2700000000000001)
    763763        """
    764         return self.__rgb
     764        return self._rgb
    765765
    766766    def hls(self):
    767767        """
     
    784784            sage: orchid.hls()
    785785            (0.8396226415094339, 0.6470588235294117, 0.5888888888888889)
    786786        """
    787         return tuple(map(float, rgb_to_hls(*self.__rgb)))
     787        return tuple(map(float, rgb_to_hls(*self._rgb)))
    788788
    789789    def hsl(self):
    790790        """
     
    805805            sage: Color('#aabbcc').hsl()
    806806            (0.5833333333333334, 0.25000000000000017, 0.7333333333333334)
    807807        """
    808         h, l, s = tuple(map(float, rgb_to_hls(*self.__rgb)))
     808        h, l, s = tuple(map(float, rgb_to_hls(*self._rgb)))
    809809        return (h, s, l)
    810810
    811811    def hsv(self):
     
    827827            sage: Color('gray').hsv()
    828828            (0.0, 0.0, 0.5019607843137255)
    829829        """
    830         return tuple(map(float, rgb_to_hsv(*self.__rgb)))
     830        return tuple(map(float, rgb_to_hsv(*self._rgb)))
    831831
    832832    def html_color(self):
    833833        """
     
    849849            sage: honeydew.html_color()
    850850            '#f0fff0'
    851851        """
    852         return float_to_html(*self.__rgb)
     852        return float_to_html(*self._rgb)
    853853
    854854    def lighter(self, fraction=1.0/3.0):
    855855        """
  • sage/plot/graphics.py

    diff --git a/sage/plot/graphics.py b/sage/plot/graphics.py
    a b  
    147147       
    148148            sage: G = Graphics()
    149149        """
    150         self.__fontsize = 10
    151         self.__show_axes = True
    152         self.__show_legend = False
    153         self.__legend_opts = {}
    154         self.__axes_color = (0, 0, 0)
    155         self.__axes_label_color = (0, 0, 0)
    156         self.__tick_label_color = (0, 0, 0)
    157         self.__axes_width = 0.8
    158         self.__objects = []
     150        self._axes_color = (0, 0, 0)
     151        self._axes_label_color = (0, 0, 0)
     152        self._axes_width = 0.8
     153        self._bbox_extra_artists = []
    159154        self._extra_kwds = {}
    160         self.__bbox_extra_artists = []
     155        self._fontsize = 10
     156        self._legend_opts = {}
     157        self._objects = []
     158        self._show_axes = True
     159        self._show_legend = False
     160        self._tick_label_color = (0, 0, 0)
    161161
    162162    def set_aspect_ratio(self, ratio):
    163163        """
     
    269269            sage: P # show with the legend
    270270        """
    271271        if show is None:
    272             return self.__show_legend
     272            return self._show_legend
    273273        else:
    274             self.__show_legend = bool(show)
     274            self._show_legend = bool(show)
    275275
    276276    def set_legend_options(self, **kwds):
    277277        r"""
     
    385385            sage: p.set_legend_options(loc=(0.5,0.5)); p # aligns the bottom of the box to the center
    386386        """
    387387        if len(kwds) == 0:
    388             return self.__legend_opts
     388            return self._legend_opts
    389389        else:
    390             self.__legend_opts.update(kwds)
     390            self._legend_opts.update(kwds)
    391391   
    392392
    393393    def get_axes_range(self):
     
    456456            {'xmin': -1.0}
    457457        """
    458458        try:
    459             return self.__axes_range
     459            return self._axes_range
    460460        except AttributeError:
    461             self.__axes_range = {}
    462             return self.__axes_range
     461            self._axes_range = {}
     462            return self._axes_range
    463463
    464464    def fontsize(self, s=None):
    465465        """
     
    488488        """
    489489        if s is None:
    490490            try:
    491                 return self.__fontsize
     491                return self._fontsize
    492492            except AttributeError:
    493                 self.__fontsize = 10
    494                 return self.__fontsize
    495         self.__fontsize = int(s)
     493                self._fontsize = 10
     494                return self._fontsize
     495        self._fontsize = int(s)
    496496
    497497    def axes(self, show=None):
    498498        """
     
    534534        """
    535535        if show is None:
    536536            try:
    537                 return self.__show_axes
     537                return self._show_axes
    538538            except AttributeError:
    539                 self.__show_axes = True
    540                 return self.__show_axes
    541         self.__show_axes = bool(show)
     539                self._show_axes = True
     540                return self._show_axes
     541        self._show_axes = bool(show)
    542542
    543543    def axes_color(self, c=None):
    544544        """
     
    579579        """
    580580        if c is None:
    581581            try:
    582                 return self.__axes_color
     582                return self._axes_color
    583583           
    584584            except AttributeError:
    585                 self.__axes_color = (0.0, 0.0, 0.0)
    586                 return self.__axes_color
    587         self.__axes_color = rgbcolor(c)
     585                self._axes_color = (0.0, 0.0, 0.0)
     586                return self._axes_color
     587        self._axes_color = rgbcolor(c)
    588588
    589589    def axes_labels(self, l=None):
    590590        """
     
    623623        """
    624624        if l is None:
    625625            try:
    626                 return self.__axes_labels
     626                return self._axes_labels
    627627            except AttributeError:
    628                 self.__axes_labels = None
    629                 return self.__axes_labels
     628                self._axes_labels = None
     629                return self._axes_labels
    630630        if not isinstance(l, (list, tuple)):
    631631            raise TypeError, "l must be a list or tuple"
    632632        if len(l) != 2:
    633633            raise ValueError, "l must have length 2"
    634         self.__axes_labels = (str(l[0]), str(l[1]))
     634        self._axes_labels = (str(l[0]), str(l[1]))
    635635
    636636    def axes_label_color(self, c=None):
    637637        r"""
     
    678678        """
    679679        if c is None:
    680680            try:
    681                 return self.__axes_label_color
     681                return self._axes_label_color
    682682            except AttributeError:
    683                 self.__axes_label_color = (0, 0, 0)
    684                 return self.__axes_label_color
    685         self.__axes_label_color = rgbcolor(c)
     683                self._axes_label_color = (0, 0, 0)
     684                return self._axes_label_color
     685        self._axes_label_color = rgbcolor(c)
    686686
    687687
    688688    def axes_width(self, w=None):
     
    719719        """
    720720        if w is None:
    721721            try:
    722                 return self.__axes_width
     722                return self._axes_width
    723723            except AttributeError:
    724                 self.__axes_width = True
    725                 return self.__axes_width
    726         self.__axes_width = float(w)
     724                self._axes_width = True
     725                return self._axes_width
     726        self._axes_width = float(w)
    727727
    728728    def tick_label_color(self, c=None):
    729729        """
     
    750750        """
    751751        if c is None:
    752752            try:
    753                 return self.__tick_label_color
     753                return self._tick_label_color
    754754            except AttributeError:
    755                 self.__tick_label_color = (0, 0, 0)
    756                 return self.__tick_label_color
    757         self.__tick_label_color = rgbcolor(c)
     755                self._tick_label_color = (0, 0, 0)
     756                return self._tick_label_color
     757        self._tick_label_color = rgbcolor(c)
    758758
    759759    def _repr_(self):
    760760        r"""
     
    863863            sage: G[1]
    864864            Circle defined by (2.0,2.0) with r=5.0
    865865        """
    866         return self.__objects[i]
     866        return self._objects[i]
    867867
    868868    def __len__(self):
    869869        """
     
    877877            sage: len(G)
    878878            3
    879879        """
    880         return len(self.__objects)
     880        return len(self._objects)
    881881
    882882    def __delitem__(self, i):
    883883        """
     
    896896            sage: len(G)
    897897            2
    898898        """
    899         del self.__objects[int(i)]
     899        del self._objects[int(i)]
    900900
    901901    def __setitem__(self, i, x):
    902902        """
     
    921921        from sage.plot.primitive import GraphicPrimitive
    922922        if not isinstance(x, GraphicPrimitive):
    923923            raise TypeError, "x must be a GraphicPrimitive"
    924         self.__objects[int(i)] = x
     924        self._objects[int(i)] = x
    925925
    926926    def __radd__(self, other):
    927927        """
     
    992992                return self.plot3d() + other
    993993            raise TypeError, "other (=%s) must be a Graphics objects"%other
    994994        g = Graphics()
    995         g.__objects = self.__objects + other.__objects
    996         g.__show_legend = self.__show_legend or other.__show_legend
     995        g._objects = self._objects + other._objects
     996        g._show_legend = self._show_legend or other._show_legend
    997997        g._extra_kwds.update(self._extra_kwds)
    998998        g._extra_kwds.update(other._extra_kwds)
    999999        if self.aspect_ratio()=='automatic':
     
    10211021            sage: G.add_primitive(A)
    10221022            sage: G
    10231023        """
    1024         self.__objects.append(primitive)
     1024        self._objects.append(primitive)
    10251025
    10261026    def plot(self, *args, **kwds):
    10271027        """
     
    10471047            sage: sum([plot(z*sin(x), 0, 10).plot3d(z) for z in range(6)]) # long time
    10481048        """
    10491049        from sage.plot.plot3d.base import Graphics3dGroup
    1050         g = Graphics3dGroup([g.plot3d(**kwds) for g in self.__objects])
     1050        g = Graphics3dGroup([g.plot3d(**kwds) for g in self._objects])
    10511051        if z:
    10521052            g = g.translate(0,0,z)
    10531053        return g
     
    11061106    # NOTE: If you intend to use a new parameter in show(), you should update
    11071107    # this dictionary to contain the default value for that parameter.
    11081108
    1109     SHOW_OPTIONS = dict(xmin=None, xmax=None, ymin=None, ymax=None,
    1110                         figsize=None, fig_tight=True,
    1111                         filename=None,
    1112                         dpi=DEFAULT_DPI, axes=None, axes_labels=None,frame=False,
    1113                         fontsize=None,
    1114                         aspect_ratio=None,
     1109    SHOW_OPTIONS = dict(aspect_ratio=None, axes=None, axes_labels=None,
     1110                        axes_pad=.02, dpi=DEFAULT_DPI,
     1111                        fig_tight=True, figsize=None, filename=None,
     1112                        fontsize=None, frame=False,
    11151113                        gridlines=None, gridlinesstyle=None,
    1116                         vgridlinesstyle=None, hgridlinesstyle=None,transparent=False,
    1117                         show_legend=None, legend_options={},
    1118                         axes_pad=.02, ticks_integer=False,
    1119                         ticks=None, tick_formatter=None)
     1114                        hgridlinesstyle=None, legend_options={},
     1115                        show_legend=None, tick_formatter=None, ticks=None,
     1116                        ticks_integer=False, transparent=False,
     1117                        xmin=None, xmax=None, ymin=None, ymax=None,
     1118                        vgridlinesstyle=None)
    11201119
    1121     @suboptions('legend', numpoints=2, borderpad=0.6, markerscale=0.6, shadow=False,
    1122                 labelspacing=0.02, handlelength=0.05, handletextpad=0.5, borderaxespad=None,
    1123                 loc='best', font_size='medium', font_family='sans-serif', font_style='normal',
    1124                 font_weight='medium', font_variant='normal', back_color=(0.9, 0.9, 0.9),
    1125                 title=None, ncol=1, columnspacing=None, fancybox=False)
     1120    @suboptions('legend',
     1121                back_color=(0.9, 0.9, 0.9), borderpad=0.6,
     1122                borderaxespad=None,
     1123                columnspacing=None,
     1124                fancybox=False, font_family='sans-serif',
     1125                font_size='medium', font_style='normal',
     1126                font_variant='normal', font_weight='medium',
     1127                handlelength=0.05, handletextpad=0.5,
     1128                labelspacing=0.02, loc='best',
     1129                markerscale=0.6, ncol=1, numpoints=2,
     1130                shadow=False, title=None)
    11261131    def show(self, **kwds):
    11271132        """
    11281133        Show this graphics image with the default image viewer.
     
    15721577            sage: list(sorted(g.get_minmax_data().items()))
    15731578            [('xmax', 3.0), ('xmin', -1.0), ('ymax', 2.0), ('ymin', 1.0)]
    15741579        """
    1575         objects = self.__objects
     1580        objects = self._objects
    15761581        if objects:
    15771582            minmax_data = [o.get_minmax_data() for o in objects]
    15781583            xmin = min(d['xmin'] for d in minmax_data)
     
    16011606        return {'xmin':xmin, 'xmax':xmax, 'ymin':ymin, 'ymax':ymax}
    16021607       
    16031608    def matplotlib(self, filename=None,
     1609                   aspect_ratio=None, axes=None, axes_labels=None, axes_pad=0.02,
     1610                   figsize=None, figure=None, fontsize=None, frame=False,
     1611                   gridlines=None, gridlinesstyle=None, hgridlinesstyle=None,
     1612                   legend_options={}, show_legend=None, sub=None,
     1613                   tick_formatter=None, ticks=None, ticks_integer=None,
    16041614                   xmin=None, xmax=None, ymin=None, ymax=None,
    1605                    figsize=None, figure=None, sub=None,
    1606                    axes=None, axes_labels=None, fontsize=None,
    1607                    frame=False, verify=True,
    1608                    aspect_ratio = None,
    1609                    gridlines=None, gridlinesstyle=None,
    1610                    vgridlinesstyle=None, hgridlinesstyle=None,
    1611                    show_legend=None, legend_options={},
    1612                    axes_pad=0.02, ticks_integer=None,
    1613                    tick_formatter=None, ticks=None):
     1615                   vgridlinesstyle=None, verify=True):
    16141616        r"""
    16151617        Return a matplotlib figure object representing the graphic
    16161618
     
    16741676        do_verify = verify
    16751677
    16761678        if axes is None:
    1677             axes = self.__show_axes
     1679            axes = self._show_axes
    16781680
    16791681        from matplotlib.figure import Figure
    16801682        from matplotlib import rcParams
     
    16991701        else:
    17001702            subplot.set_aspect(aspect_ratio, adjustable='box')
    17011703        #add all the primitives to the subplot
    1702         for g in self.__objects:
     1704        for g in self._objects:
    17031705            g._render_on_subplot(subplot)
    17041706            if hasattr(g, '_bbox_extra_artists'):
    1705                 self.__bbox_extra_artists.extend(g._bbox_extra_artists)
     1707                self._bbox_extra_artists.extend(g._bbox_extra_artists)
    17061708       
    17071709        #add the legend if requested
    17081710        if show_legend is None:
    1709             show_legend = self.__show_legend
     1711            show_legend = self._show_legend
    17101712       
    17111713        if show_legend:
    17121714            from matplotlib.font_manager import FontProperties
    17131715            lopts = dict()
    17141716            lopts.update(legend_options)
    1715             lopts.update(self.__legend_opts)
     1717            lopts.update(self._legend_opts)
    17161718            prop = FontProperties(family=lopts.pop('font_family'), weight=lopts.pop('font_weight'), \
    17171719                    size=lopts.pop('font_size'), style=lopts.pop('font_style'), variant=lopts.pop('font_variant'))
    17181720            color = lopts.pop('back_color')
     
    17321734
    17331735
    17341736        if axes is None:
    1735             axes = self.__show_axes
     1737            axes = self._show_axes
    17361738
    17371739        for spine in subplot.spines.values():
    1738             spine.set_color(self.__axes_color)
    1739             spine.set_linewidth(self.__axes_width)
     1740            spine.set_color(self._axes_color)
     1741            spine.set_linewidth(self._axes_width)
    17401742       
    17411743
    17421744        if frame:
     
    18031805            subplot.set_frame_on(True)
    18041806            if axes:
    18051807                if ymin<=0 and ymax>=0:
    1806                     subplot.axhline(color=self.__axes_color,
    1807                                     linewidth=self.__axes_width)
     1808                    subplot.axhline(color=self._axes_color,
     1809                                    linewidth=self._axes_width)
    18081810                if xmin<=0 and xmax>=0:
    1809                     subplot.axvline(color=self.__axes_color,
    1810                                     linewidth=self.__axes_width)
     1811                    subplot.axvline(color=self._axes_color,
     1812                                    linewidth=self._axes_width)
    18111813           
    18121814        elif axes:
    18131815            ymiddle=False
     
    19631965                subplot.yaxis.get_majorticklabels() + \
    19641966                subplot.yaxis.get_minorticklabels()
    19651967            for ticklabel in ticklabels:
    1966                 ticklabel.set_fontsize(self.__fontsize)
    1967                 ticklabel.set_color(self.__tick_label_color)
     1968                ticklabel.set_fontsize(self._fontsize)
     1969                ticklabel.set_color(self._tick_label_color)
    19681970
    19691971            ticklines=subplot.xaxis.get_majorticklines() + \
    19701972                subplot.xaxis.get_minorticklines() + \
    19711973                subplot.yaxis.get_majorticklines() + \
    19721974                subplot.yaxis.get_minorticklines()
    19731975            for tickline in ticklines:
    1974                 tickline.set_color(self.__axes_color)
     1976                tickline.set_color(self._axes_color)
    19751977               
    19761978           
    19771979        if gridlines is not None:
     
    20322034
    20332035
    20342036
    2035         if self.__axes_labels is not None:
     2037        if self._axes_labels is not None:
    20362038            label_options={}
    2037             label_options['color']=self.__axes_label_color
    2038             label_options['size']=self.__fontsize
    2039             subplot.set_xlabel(self.__axes_labels[0], **label_options)
    2040             subplot.set_ylabel(self.__axes_labels[1], **label_options)
     2039            label_options['color']=self._axes_label_color
     2040            label_options['size']=self._fontsize
     2041            subplot.set_xlabel(self._axes_labels[0], **label_options)
     2042            subplot.set_ylabel(self._axes_labels[1], **label_options)
    20412043               
    20422044
    20432045            if axes is True and frame is False:
     
    20922094    # ALLOWED_EXTENSIONS is the list of recognized formats.
    20932095    # filename argument is written explicitly so that it can be used as a
    20942096    # positional one, which is a very likely usage for this function.
    2095     @suboptions('legend', numpoints=2, borderpad=0.6, markerscale=0.6, shadow=False,
    2096                 labelspacing=0.02, handlelength=0.05, handletextpad=0.5, borderaxespad=None,
    2097                 loc='best', font_size='medium', font_family='sans-serif', font_style='normal',
    2098                 font_weight='medium', font_variant='normal', back_color=(0.9, 0.9, 0.9),
    2099                 title=None, ncol=1, columnspacing=None, fancybox=False)
     2097    @suboptions('legend',
     2098                back_color=(0.9, 0.9, 0.9), borderpad=0.6,
     2099                borderaxespad=None,
     2100                columnspacing=None,
     2101                fancybox=False, font_family='sans-serif',
     2102                font_size='medium', font_style='normal',
     2103                font_variant='normal', font_weight='medium',
     2104                handlelength=0.05, handletextpad=0.5,
     2105                labelspacing=0.02, loc='best',
     2106                markerscale=0.6, ncol=1, numpoints=2,
     2107                shadow=False, title=None)
    21002108    def save(self, filename=None, **kwds):
    21012109        r"""
    21022110        Save the graphics to an image file.
     
    22122220
    22132221            if fig_tight is True:
    22142222                figure.savefig(filename, dpi=dpi, bbox_inches='tight',
    2215                     bbox_extra_artists=self.__bbox_extra_artists,
     2223                    bbox_extra_artists=self._bbox_extra_artists,
    22162224                    transparent=transparent)
    22172225            else:
    22182226                figure.savefig(filename, dpi=dpi,
     
    24172425        i = int(i)
    24182426        self._glist[i] = g
    24192427       
    2420     def __set_figsize__(self, ls):
     2428    def _set_figsize_(self, ls):
    24212429        """
    24222430        Set the figsize of all plots in the array.
    24232431
     
    25402548            sage: G = graphics_array(L)
    25412549            sage: G.save(F,500,axes=False)  # long time (6s on sage.math, 2012)
    25422550        """
    2543         if (figsize is not None): self.__set_figsize__(figsize)
     2551        if (figsize is not None): self._set_figsize_(figsize)
    25442552        self._render(filename, dpi=dpi, figsize=self._figsize, axes = axes, **args)
    25452553
    25462554    def show(self, filename=None, dpi=DEFAULT_DPI, figsize=None,
     
    25712579            sage: G = graphics_array([[plot(sin), plot(cos)], [plot(tan), plot(sec)]])
    25722580            sage: G.show(axes=False)
    25732581        """
    2574         if (figsize is not None): self.__set_figsize__(figsize)
     2582        if (figsize is not None): self._set_figsize_(figsize)
    25752583        if sage.plot.plot.DOCTEST_MODE:
    25762584            self.save(DOCTEST_MODE_FILE,
    25772585                      dpi=dpi, figsize=self._figsize, axes = axes, **args)
  • sage/plot/primitive.py

    diff --git a/sage/plot/primitive.py b/sage/plot/primitive.py
    a b  
    4848            sage: GraphicPrimitive({})
    4949            Graphics primitive
    5050        """
    51         self.__options = options
     51        self._options = options
    5252       
    5353    def _allowed_options(self):
    5454        """
     
    133133            sage: q.options()['zorder']
    134134            3
    135135        """
    136         self.__options['zorder'] = zorder
     136        self._options['zorder'] = zorder
    137137       
    138138    def options(self):
    139139        """
     
    150150        """
    151151        from sage.plot.graphics import do_verify
    152152        from sage.plot.colors import hue
    153         O = dict(self.__options)
     153        O = dict(self._options)
    154154        if do_verify:
    155155            A = self._allowed_options()
    156156            t = False