From 62df86df21d115b394d351e2fc571658f9cb798d Mon Sep 17 00:00:00 2001 From: Michael Droettboom Date: Mon, 30 Nov 2015 14:05:01 -0500 Subject: [PATCH 1/6] Add _internal.classic_mode rcParam --- lib/matplotlib/mpl-data/stylelib/classic.mplstyle | 2 ++ lib/matplotlib/rcsetup.py | 9 ++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/matplotlib/mpl-data/stylelib/classic.mplstyle b/lib/matplotlib/mpl-data/stylelib/classic.mplstyle index e91dfae05d61..7660f8575e9c 100644 --- a/lib/matplotlib/mpl-data/stylelib/classic.mplstyle +++ b/lib/matplotlib/mpl-data/stylelib/classic.mplstyle @@ -497,3 +497,5 @@ animation.convert_path: convert # Path to ImageMagick's convert binary. # is also the name of a system tool. animation.convert_args: animation.html: none + +_internal.classic_mode: True \ No newline at end of file diff --git a/lib/matplotlib/rcsetup.py b/lib/matplotlib/rcsetup.py index f52e8305f335..79b1e8bacc37 100644 --- a/lib/matplotlib/rcsetup.py +++ b/lib/matplotlib/rcsetup.py @@ -1208,7 +1208,14 @@ def validate_hist_bins(s): 'animation.convert_path': ['convert', six.text_type], # Additional arguments for mencoder movie writer (using pipes) - 'animation.convert_args': [[], validate_stringlist]} + 'animation.convert_args': [[], validate_stringlist], + + # Classic (pre 2.0) compatibility mode + # This is used for things that are hard to make backward compatible + # with a sane rcParam alone. This does *not* turn on classic mode + # altogether. For that use `matplotlib.style.use('classic')`. + '_internal.classic_mode': [False, validate_bool] +} if __name__ == '__main__': From f88114c9a7cdb6aa9c8f90d62e36d30b7a7e48bf Mon Sep 17 00:00:00 2001 From: Michael Droettboom Date: Mon, 16 Nov 2015 11:14:18 -0500 Subject: [PATCH 2/6] No edges on filled patches by default --- lib/matplotlib/axes/_axes.py | 11 +++++++---- lib/matplotlib/axes/_base.py | 2 +- lib/matplotlib/collections.py | 18 +++++++++++++++++- lib/matplotlib/patches.py | 20 ++++++++++++++++++-- lib/matplotlib/rcsetup.py | 6 +++--- matplotlibrc.template | 10 +++++++--- 6 files changed, 53 insertions(+), 14 deletions(-) diff --git a/lib/matplotlib/axes/_axes.py b/lib/matplotlib/axes/_axes.py index 76c9f3cce7fb..871c66c193d4 100644 --- a/lib/matplotlib/axes/_axes.py +++ b/lib/matplotlib/axes/_axes.py @@ -1986,7 +1986,7 @@ def bar(self, left, height, width=0.8, bottom=None, **kwargs): xerr = kwargs.pop('xerr', None) yerr = kwargs.pop('yerr', None) error_kw = kwargs.pop('error_kw', dict()) - ecolor = kwargs.pop('ecolor', None) + ecolor = kwargs.pop('ecolor', 'k') capsize = kwargs.pop('capsize', rcParams["errorbar.capsize"]) error_kw.setdefault('ecolor', ecolor) error_kw.setdefault('capsize', capsize) @@ -3875,6 +3875,7 @@ def scatter(self, x, y, s=20, c=None, marker='o', cmap=None, norm=None, marker_obj.get_transform()) if not marker_obj.is_filled(): edgecolors = 'face' + linewidths = rcParams['lines.linewidth'] offsets = np.dstack((x, y)) @@ -4018,9 +4019,9 @@ def hexbin(self, x, y, C=None, gridsize=100, bins=None, the alpha value for the patches *linewidths*: [ *None* | scalar ] - If *None*, defaults to rc lines.linewidth. Note that this - is a tuple, and if you set the linewidths argument you - must set it as a sequence of floats, as required by + If *None*, defaults to 1.0. Note that this is a tuple, and + if you set the linewidths argument you must set it as a + sequence of floats, as required by :class:`~matplotlib.collections.RegularPolyCollection`. Other keyword arguments controlling the Collection properties: @@ -4213,6 +4214,8 @@ def hexbin(self, x, y, C=None, gridsize=100, bins=None, if edgecolors == 'none': edgecolors = 'face' + if linewidths is None: + linewidths = [1.0] if xscale == 'log' or yscale == 'log': polygons = np.expand_dims(polygon, 0) + np.expand_dims(offsets, 1) diff --git a/lib/matplotlib/axes/_base.py b/lib/matplotlib/axes/_base.py index 41afd14cce60..dcfac21ada23 100644 --- a/lib/matplotlib/axes/_base.py +++ b/lib/matplotlib/axes/_base.py @@ -325,7 +325,7 @@ def _makefill(self, x, y, kw, kwargs): seg = mpatches.Polygon(np.hstack((x[:, np.newaxis], y[:, np.newaxis])), facecolor=facecolor, - fill=True, + fill=kwargs.get('fill', True), closed=kw['closed']) self.set_patchprops(seg, **kwargs) return seg diff --git a/lib/matplotlib/collections.py b/lib/matplotlib/collections.py index 58e4d955eeb8..30623ace3cea 100644 --- a/lib/matplotlib/collections.py +++ b/lib/matplotlib/collections.py @@ -88,6 +88,10 @@ class Collection(artist.Artist, cm.ScalarMappable): #: Each kind of collection defines this based on its arguments. _transforms = np.empty((0, 3, 3)) + # Whether to draw an edge by default. Set on a + # subclass-by-subclass basis. + _edge_default = False + def __init__(self, edgecolors=None, facecolors=None, @@ -476,7 +480,15 @@ def set_linewidth(self, lw): ACCEPTS: float or sequence of floats """ if lw is None: - lw = mpl.rcParams['patch.linewidth'] + if (self._edge_default or + mpl.rcParams['_internal.classic_mode'] or + not self._is_filled): + lw = mpl.rcParams['patch.linewidth'] + if lw is None: + lw = mpl.rcParams['lines.linewidth'] + else: + lw = 0 + self._linewidths = self._get_value(lw) self.stale = True @@ -1046,6 +1058,8 @@ class LineCollection(Collection): number of segments. """ + _edge_default = True + def __init__(self, segments, # Can be None. linewidths=None, colors=None, @@ -1217,6 +1231,8 @@ class EventCollection(LineCollection): are displayed as v ''' + _edge_default = True + def __init__(self, positions, # Can be None. orientation=None, diff --git a/lib/matplotlib/patches.py b/lib/matplotlib/patches.py index c58958ef64db..950ce616b698 100644 --- a/lib/matplotlib/patches.py +++ b/lib/matplotlib/patches.py @@ -67,6 +67,10 @@ class Patch(artist.Artist): validCap = ('butt', 'round', 'projecting') validJoin = ('miter', 'round', 'bevel') + # Whether to draw an edge by default. Set on a + # subclass-by-subclass basis. + _edge_default = False + def __str__(self): return str(self.__class__).split('.')[-1] @@ -110,11 +114,12 @@ def __init__(self, else: self.set_edgecolor(edgecolor) self.set_facecolor(facecolor) + + self.set_fill(fill) self.set_linewidth(linewidth) self.set_linestyle(linestyle) self.set_antialiased(antialiased) self.set_hatch(hatch) - self.set_fill(fill) self.set_capstyle(capstyle) self.set_joinstyle(joinstyle) self._combined_transform = transforms.IdentityTransform() @@ -339,7 +344,14 @@ def set_linewidth(self, w): ACCEPTS: float or None for default """ if w is None: - w = mpl.rcParams['patch.linewidth'] + if (not self._fill or + self._edge_default or + mpl.rcParams['_internal.classic_mode']): + w = mpl.rcParams['patch.linewidth'] + if w is None: + w = mpl.rcParams['axes.linewidth'] + else: + w = 0 self._linewidth = float(w) @@ -848,6 +860,8 @@ class PathPatch(Patch): """ A general polycurve path patch. """ + _edge_default = True + def __str__(self): return "Poly((%g, %g) ...)" % tuple(self._path.vertices[0]) @@ -2397,6 +2411,8 @@ class FancyBboxPatch(Patch): """ + _edge_default = True + def __str__(self): return self.__class__.__name__ \ + "(%g,%g;%gx%g)" % (self._x, self._y, diff --git a/lib/matplotlib/rcsetup.py b/lib/matplotlib/rcsetup.py index 79b1e8bacc37..70c693563e64 100644 --- a/lib/matplotlib/rcsetup.py +++ b/lib/matplotlib/rcsetup.py @@ -813,7 +813,7 @@ def validate_hist_bins(s): 'lines.linestyle': ['-', six.text_type], # solid line 'lines.color': ['b', validate_color], # blue 'lines.marker': ['None', six.text_type], # black - 'lines.markeredgewidth': [0.5, validate_float], + 'lines.markeredgewidth': [1.0, validate_float], 'lines.markersize': [6, validate_float], # markersize, in points 'lines.antialiased': [True, validate_bool], # antialiased (no jaggies) 'lines.dash_joinstyle': ['round', validate_joinstyle], @@ -825,7 +825,7 @@ def validate_hist_bins(s): 'markers.fillstyle': ['full', validate_fillstyle], ## patch props - 'patch.linewidth': [1.0, validate_float], # line width in points + 'patch.linewidth': [None, validate_float_or_None], # line width in points 'patch.edgecolor': ['k', validate_color], # black 'patch.facecolor': ['b', validate_color], # blue 'patch.antialiased': [True, validate_bool], # antialiased (no jaggies) @@ -1035,7 +1035,7 @@ def validate_hist_bins(s): 'legend.markerscale': [1.0, validate_float], 'legend.shadow': [False, validate_bool], 'legend.facecolor': ['inherit', validate_color_or_inherit], - 'legend.edgecolor': ['inherit', validate_color_or_inherit], + 'legend.edgecolor': ['k', validate_color_or_inherit], # tick properties 'xtick.top': [True, validate_bool], # draw ticks on the top side diff --git a/matplotlibrc.template b/matplotlibrc.template index 16c78d43967d..b4e602b846c5 100644 --- a/matplotlibrc.template +++ b/matplotlibrc.template @@ -82,7 +82,7 @@ backend : %(backend)s #lines.linestyle : - # solid line #lines.color : blue # has no affect on plot(); see axes.prop_cycle #lines.marker : None # the default marker -#lines.markeredgewidth : 0.5 # the line width around the marker symbol +#lines.markeredgewidth : 1.0 # the line width around the marker symbol #lines.markersize : 6 # markersize, in points #lines.dash_joinstyle : miter # miter|round|bevel #lines.dash_capstyle : butt # butt|round|projecting @@ -97,8 +97,10 @@ backend : %(backend)s # circles. See # http://matplotlib.org/api/artist_api.html#module-matplotlib.patches # information on patch properties -#patch.linewidth : 1.0 # edge width in points -#patch.facecolor : blue +#patch.linewidth : None # edge width in points. + # If None, use axes.linewidth when patch + # is not filled. +#patch.facecolor : b #patch.edgecolor : black #patch.antialiased : True # render patches in antialiased (no jaggies) @@ -377,6 +379,8 @@ backend : %(backend)s #legend.frameon : True # whether or not to draw a frame around legend #legend.framealpha : None # opacity of of legend frame #legend.scatterpoints : 3 # number of scatter points +#legend.facecolor : inherit +#legend.edgecolor : k ### FIGURE # See http://matplotlib.org/api/figure_api.html#matplotlib.figure.Figure From de7bc9331c19ce378df3a3c066cbf1b87fceb58a Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Sun, 8 Nov 2015 21:37:31 -0500 Subject: [PATCH 3/6] API: Line2D and scatter default to automatic - for plot, the default marker edge is now the color of the marker - for scatter the marker edge color now follows the face color closes #4679 --- lib/matplotlib/axes/_axes.py | 16 ++++++++++++---- lib/matplotlib/lines.py | 12 ++++++------ 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/lib/matplotlib/axes/_axes.py b/lib/matplotlib/axes/_axes.py index 871c66c193d4..16a249e0d6e8 100644 --- a/lib/matplotlib/axes/_axes.py +++ b/lib/matplotlib/axes/_axes.py @@ -3762,11 +3762,16 @@ def scatter(self, x, y, s=20, c=None, marker='o', cmap=None, norm=None, If None, defaults to (lines.linewidth,). edgecolors : color or sequence of color, optional, default: None - If None, defaults to (patch.edgecolor). + If None, defaults to 'face' + If 'face', the edge color will always be the same as - the face color. If it is 'none', the patch boundary will not - be drawn. For non-filled markers, the `edgecolors` kwarg - is ignored; color is determined by `c`. + the face color. + + If it is 'none', the patch boundary will not + be drawn. + + For non-filled markers, the `edgecolors` kwarg + is ignored and forced to 'face' internally. Returns ------- @@ -3823,6 +3828,9 @@ def scatter(self, x, y, s=20, c=None, marker='o', cmap=None, norm=None, else: c = 'b' # The original default + if edgecolors is None and not rcParams['_internal.classic_mode']: + edgecolors = 'face' + self._process_unit_info(xdata=x, ydata=y, kwargs=kwargs) x = self.convert_xunits(x) y = self.convert_yunits(y) diff --git a/lib/matplotlib/lines.py b/lib/matplotlib/lines.py index f8aada39b927..cba5d6f04b84 100644 --- a/lib/matplotlib/lines.py +++ b/lib/matplotlib/lines.py @@ -849,12 +849,12 @@ def get_marker(self): def get_markeredgecolor(self): mec = self._markeredgecolor if (is_string_like(mec) and mec == 'auto'): - if self._marker.get_marker() in ('.', ','): - return self._color - if self._marker.is_filled() and self.get_fillstyle() != 'none': - return 'k' # Bad hard-wired default... - else: - return self._color + if rcParams['_internal.classic_mode']: + if self._marker.get_marker() in ('.', ','): + return self._color + if self._marker.is_filled() and self.get_fillstyle() != 'none': + return 'k' # Bad hard-wired default... + return self._color else: return mec From 5bb29e0d86b030bab3d37b65c654d4a5f446ea35 Mon Sep 17 00:00:00 2001 From: Michael Droettboom Date: Tue, 17 Nov 2015 14:04:38 -0500 Subject: [PATCH 4/6] Fix fancy arrows --- examples/pylab_examples/fancyarrow_demo.py | 4 ++-- lib/matplotlib/patches.py | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/examples/pylab_examples/fancyarrow_demo.py b/examples/pylab_examples/fancyarrow_demo.py index 6fceb9878d18..227e53bb36e0 100644 --- a/examples/pylab_examples/fancyarrow_demo.py +++ b/examples/pylab_examples/fancyarrow_demo.py @@ -25,7 +25,7 @@ def to_texstring(s): for i, (stylename, styleclass) in enumerate(sorted(styles.items())): x = 3.2 + (i//nrow)*4 y = (figheight - 0.7 - i % nrow) # /figheight - p = mpatches.Circle((x, y), 0.2, fc="w") + p = mpatches.Circle((x, y), 0.2) ax.add_patch(p) ax.annotate(to_texstring(stylename), (x, y), @@ -37,7 +37,7 @@ def to_texstring(s): patchB=p, shrinkA=5, shrinkB=5, - fc="w", ec="k", + fc="k", ec="k", connectionstyle="arc3,rad=-0.05", ), bbox=dict(boxstyle="square", fc="w")) diff --git a/lib/matplotlib/patches.py b/lib/matplotlib/patches.py index 950ce616b698..addac4992be4 100644 --- a/lib/matplotlib/patches.py +++ b/lib/matplotlib/patches.py @@ -1134,6 +1134,8 @@ class FancyArrow(Polygon): Like Arrow, but lets you set head width and head height independently. """ + _edge_default = True + def __str__(self): return "FancyArrow()" @@ -2465,6 +2467,7 @@ def __init__(self, xy, width, height, self._mutation_scale = mutation_scale self._mutation_aspect = mutation_aspect + self.stale = True @docstring.dedent_interpd @@ -3951,6 +3954,7 @@ class FancyArrowPatch(Patch): """ A fancy arrow patch. It draws an arrow using the :class:ArrowStyle. """ + _edge_default = True def __str__(self): From 84496fa208092fcea91905da1580ec5db3af20f4 Mon Sep 17 00:00:00 2001 From: Michael Droettboom Date: Tue, 1 Dec 2015 10:10:25 -0500 Subject: [PATCH 5/6] Add test --- .../test_artist/default_edges.png | Bin 0 -> 24091 bytes lib/matplotlib/tests/test_artist.py | 21 ++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 lib/matplotlib/tests/baseline_images/test_artist/default_edges.png diff --git a/lib/matplotlib/tests/baseline_images/test_artist/default_edges.png b/lib/matplotlib/tests/baseline_images/test_artist/default_edges.png new file mode 100644 index 0000000000000000000000000000000000000000..932e2d9ec08ba62b4ea2e0494232c5f60258bec0 GIT binary patch literal 24091 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 QT>~C? Date: Tue, 1 Dec 2015 15:51:00 -0500 Subject: [PATCH 6/6] Munge indentation --- lib/matplotlib/collections.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/matplotlib/collections.py b/lib/matplotlib/collections.py index 30623ace3cea..7032bce22a21 100644 --- a/lib/matplotlib/collections.py +++ b/lib/matplotlib/collections.py @@ -481,8 +481,8 @@ def set_linewidth(self, lw): """ if lw is None: if (self._edge_default or - mpl.rcParams['_internal.classic_mode'] or - not self._is_filled): + mpl.rcParams['_internal.classic_mode'] or + not self._is_filled): lw = mpl.rcParams['patch.linewidth'] if lw is None: lw = mpl.rcParams['lines.linewidth'] pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy