See More

From e112aefc2b268acc3d353f2938a3bb85bf0355f8 Mon Sep 17 00:00:00 2001 From: Jason Liw Yan Chong Date: Sun, 29 Mar 2015 17:42:00 -0400 Subject: [PATCH 1/6] Feature implementation for Issue 2841 --- lib/matplotlib/axes/_axes.py | 4 +- lib/matplotlib/axes/_base.py | 58 ++++++++++++++----- lib/matplotlib/cycle.py | 108 +++++++++++++++++++++++++++++++++++ lib/matplotlib/rcsetup.py | 29 ++++++++++ lib/matplotlib/stackplot.py | 4 +- lib/matplotlib/streamplot.py | 2 +- 6 files changed, 185 insertions(+), 20 deletions(-) create mode 100644 lib/matplotlib/cycle.py diff --git a/lib/matplotlib/axes/_axes.py b/lib/matplotlib/axes/_axes.py index 20fde55ba981..047d0b31d2f3 100644 --- a/lib/matplotlib/axes/_axes.py +++ b/lib/matplotlib/axes/_axes.py @@ -2876,7 +2876,7 @@ def xywhere(xs, ys, mask): if ecolor is None: if l0 is None: - ecolor = six.next(self._get_lines.color_cycle) + ecolor = self._get_lines.cycle.get_next_color() else: ecolor = l0.get_color() @@ -5677,7 +5677,7 @@ def hist(self, x, bins=10, range=None, normed=False, weights=None, nx = len(x) # number of datasets if color is None: - color = [six.next(self._get_lines.color_cycle) + color = [self._get_lines.cycle.get_next_color() for i in xrange(nx)] else: color = mcolors.colorConverter.to_rgba_array(color) diff --git a/lib/matplotlib/axes/_base.py b/lib/matplotlib/axes/_base.py index 1e4f52d377cd..fae0955894a2 100644 --- a/lib/matplotlib/axes/_base.py +++ b/lib/matplotlib/axes/_base.py @@ -29,6 +29,8 @@ import matplotlib.font_manager as font_manager import matplotlib.text as mtext import matplotlib.image as mimage +import matplotlib.cycle as mcycle + from matplotlib.artist import allow_rasterization from matplotlib.cbook import iterable @@ -137,7 +139,7 @@ class _process_plot_var_args(object): def __init__(self, axes, command='plot'): self.axes = axes self.command = command - self.set_color_cycle() + self.cycle = mcycle.Cycle() def __getstate__(self): # note: it is not possible to pickle a itertools.cycle instance @@ -145,12 +147,7 @@ def __getstate__(self): def __setstate__(self, state): self.__dict__ = state.copy() - self.set_color_cycle() - - def set_color_cycle(self, clist=None): - if clist is None: - clist = rcParams['axes.color_cycle'] - self.color_cycle = itertools.cycle(clist) + self.cycle.set_color_cycle() def __call__(self, *args, **kwargs): @@ -229,12 +226,10 @@ def _xy_from_xy(self, x, y): return x, y def _makeline(self, x, y, kw, kwargs): - kw = kw.copy() # Don't modify the original kw. + args = self.cycle.next() + args.update(kw) + kw = args.copy() # Don't modify the original kw. kwargs = kwargs.copy() - if kw.get('color', None) is None and kwargs.get('color', None) is None: - kwargs['color'] = kw['color'] = six.next(self.color_cycle) - # (can't use setdefault because it always evaluates - # its second argument) seg = mlines.Line2D(x, y, **kw ) @@ -245,7 +240,7 @@ def _makefill(self, x, y, kw, kwargs): try: facecolor = kw['color'] except KeyError: - facecolor = six.next(self.color_cycle) + facecolor = self.cycle.get_next_color() seg = mpatches.Polygon(np.hstack((x[:, np.newaxis], y[:, np.newaxis])), facecolor=facecolor, @@ -971,14 +966,47 @@ def clear(self): """clear the axes""" self.cla() + def set_cycle(self, style, slist): + """ + Set the cycle for a line attribute for any future plot commands + on this Axes + + *style* is a key to a dictionary for cycles in the cycle class + *slist* is a list of mpl style specifiers + """ + self._get_lines.cycle.set_cycle(style, slist) + + def clear_all_cycle(self): + """ + Clear all the current line attribute cycles + """ + self._get_lines.cycle.clear_all_cycle() + + def clear_cycle(self, style): + """ + Clear a cycle for a line attribute specified by style + + *style* is a key to a dictionary for cycles in the cycle class + """ + self._get_lines.cycle.clear_cycle(style) + def set_color_cycle(self, clist): """ Set the color cycle for any future plot commands on this Axes. *clist* is a list of mpl color specifiers. """ - self._get_lines.set_color_cycle(clist) - self._get_patches_for_fill.set_color_cycle(clist) + self._get_lines.cycle.set_color_cycle(clist) + self._get_patches_for_fill.cycle.set_color_cycle(clist) + + def set_line_cycle(self, llist): + """ + Set the line style cycle for any future plot commands on this + Axes. + + *llist* is a list of mpl line style specifiers. + """ + self._get_lines.cycle.set_line_cycle(llist) def ishold(self): """return the HOLD status of the axes""" diff --git a/lib/matplotlib/cycle.py b/lib/matplotlib/cycle.py new file mode 100644 index 000000000000..6fe0d64cc286 --- /dev/null +++ b/lib/matplotlib/cycle.py @@ -0,0 +1,108 @@ +import itertools +import six +from matplotlib import rcParams + + +class Cycle: + + def __init__(self): + """ + Set the initial cycle of styles to be used by the lines of the graph + """ + self._styles = {'color': None, + 'linestyle': None, + 'linewidth': None, + 'marker': None, + 'markersize': None, + 'markeredgewidth': None, + 'markeredgecolor': None, + 'markerfacecolor': None, + 'antialiased': None, + 'dash_capstyle': None, + 'solid_capstyle': None, + 'dash_joinstyle': None, + 'solid_joinstyle': None, + } + self.set_color_cycle() + self.set_line_cycle() + + def next(self): + """ + Returns the next set of line attributes for a line on the graph to use + """ + args = {} + for i in self._styles.keys(): + if self._styles[i] != None: + args[i] = six.next(self._styles[i]) + return args + + def set_cycle(self, style, slist): + """ + Set a cycle for a line attribute specified by style, the cycle to be + used to is specified by slist + + *style* is a key to the _style dictionary + *slist* is a list of mpl style specifiers + """ + if self.validate(style, slist): + self._styles[style] = itertools.cycle(slist) + + def validate(self, style, plist): + """ + Ensures that the style given is a valid attribute to by cycled over + If the style is a valid cycle, ensure that the list of specifiers + given are valid specifiers for that style + + *style* is a key to the _style dictionary + *plist* is a list of mpl style specifiers + """ + if style not in self._styles.keys(): + raise ValueError( + "Set cycle value error, %s is not a valid style" % style) + param = 'lines.' + style + for val in set(plist): + try: + rcParams.validate[param](val) + except ValueError: + raise ValueError( + "Set cycle value error, Style %s: %s" % (style, str(val))) + return True + + def clear_cycle(self, style): + """ + Clears(resets) a cycle for a line attribute specified by style + + *style* is a key to the _style dictionary + """ + self._styles[style] = None + + def clear_all_cycle(self): + """ + Clears (resets) all cycles for the lines on a plot + """ + for style in self._styles.keys(): + self._styles[style] = None + + def get_next_color(self): + """ + Return the next color to be used by a line + """ + return six.next(self._styles['color']) + + def set_color_cycle(self, clist=None): + """ + Sets a color cycle to be used for the lines on the graph, if none are + specified the default color cycle will be used + """ + if clist is None: + clist = rcParams['axes.color_cycle'] + self._styles['color'] = itertools.cycle(clist) + + def set_line_cycle(self, llist=None): + """ + Sets a line style cycle to be used for the lines on the graph, if none are + specified the default line style cycle will be used + """ + if llist is None: + llist = rcParams['axes.line_cycle'] + self._styles['linestyle'] = itertools.cycle(llist) diff --git a/lib/matplotlib/rcsetup.py b/lib/matplotlib/rcsetup.py index 1fdf121b32d8..93cdf17c1c32 100644 --- a/lib/matplotlib/rcsetup.py +++ b/lib/matplotlib/rcsetup.py @@ -234,6 +234,24 @@ def __call__(self, s): except ValueError: raise ValueError('Could not convert all entries to ints') +def validate_line(s): + 'return a valid arg' + if s in (None, 'none', 'None', ' ', ''): + return 'None' + + if s in ('-', '--', '-.', ':'): + return s + + raise ValueError("line given not valid") + + +def validate_markercolor(s): + 'return a valid marker color arg' + if s == 'auto': + return s + else: + return validate_color(s) + def validate_color(s): 'return a valid color arg' @@ -278,6 +296,14 @@ def validate_colorlist(s): msg = "'s' must be of type [ string | list | tuple ]" raise ValueError(msg) +def validate_linelist(s): + 'return a list of colorspecs' + if isinstance(s, six.string_types): + return [validate_line(l.strip()) for l in s.split(',')] + else: + assert type(s) in [list, tuple] + return [validate_line(l) for l in s] + def validate_stringlist(s): 'return a list' if isinstance(s, six.string_types): @@ -529,6 +555,8 @@ def __call__(self, s): 'lines.marker': ['None', six.text_type], # black 'lines.markeredgewidth': [0.5, validate_float], 'lines.markersize': [6, validate_float], # markersize, in points + 'lines.markeredgecolor' : ['auto', validate_markercolor], + 'lines.markerfacecolor' : ['auto', validate_markercolor], 'lines.antialiased': [True, validate_bool], # antialised (no jaggies) 'lines.dash_joinstyle': ['round', validate_joinstyle], 'lines.solid_joinstyle': ['round', validate_joinstyle], @@ -637,6 +665,7 @@ def __call__(self, s): 'axes.color_cycle': [['b', 'g', 'r', 'c', 'm', 'y', 'k'], validate_colorlist], # cycle of plot # line colors + 'axes.line_cycle':[['-'],validate_linelist], 'axes.xmargin': [0, ValidateInterval(0, 1, closedmin=True, closedmax=True)], # margin added to xaxis diff --git a/lib/matplotlib/stackplot.py b/lib/matplotlib/stackplot.py index b42ca98702b4..b04765fb62bb 100644 --- a/lib/matplotlib/stackplot.py +++ b/lib/matplotlib/stackplot.py @@ -103,13 +103,13 @@ def stackplot(axes, x, *args, **kwargs): # Color between x = 0 and the first array. r.append(axes.fill_between(x, first_line, stack[0, :], - facecolor=six.next(axes._get_lines.color_cycle), + facecolor=axes._get_lines.cycle.get_next_color(), label= six.next(labels, None), **kwargs)) # Color between array i-1 and array i for i in xrange(len(y) - 1): - color = six.next(axes._get_lines.color_cycle) + color = axes._get_lines.cycle.get_next_color() r.append(axes.fill_between(x, stack[i, :], stack[i + 1, :], facecolor= color, label= six.next(labels, None), diff --git a/lib/matplotlib/streamplot.py b/lib/matplotlib/streamplot.py index 3708afa647db..b1ef343c78a9 100644 --- a/lib/matplotlib/streamplot.py +++ b/lib/matplotlib/streamplot.py @@ -80,7 +80,7 @@ def streamplot(axes, x, y, u, v, density=1, linewidth=None, color=None, transform = axes.transData if color is None: - color = six.next(axes._get_lines.color_cycle) + color = axes._get_lines.get_next_color() if linewidth is None: linewidth = matplotlib.rcParams['lines.linewidth'] From 0ca872d3530339fd4817807ca28487cd8a698390 Mon Sep 17 00:00:00 2001 From: Chris Li Date: Sat, 4 Apr 2015 15:45:40 -0400 Subject: [PATCH 2/6] Added automated tests for cycle issue #2841 --- .../test_cycle/clear_all_cycle.pdf | Bin 0 -> 7099 bytes .../test_cycle/clear_all_cycle.png | Bin 0 -> 53591 bytes .../test_cycle/clear_all_cycle.svg | 660 +++++++++++++ .../test_cycle/clear_one_cycle.pdf | Bin 0 -> 7111 bytes .../test_cycle/clear_one_cycle.png | Bin 0 -> 72233 bytes .../test_cycle/clear_one_cycle.svg | 660 +++++++++++++ .../baseline_images/test_cycle/set_cycles.pdf | Bin 0 -> 9160 bytes .../baseline_images/test_cycle/set_cycles.png | Bin 0 -> 61682 bytes .../baseline_images/test_cycle/set_cycles.svg | 902 ++++++++++++++++++ lib/matplotlib/tests/test_cycle.py | 51 + 10 files changed, 2273 insertions(+) create mode 100644 lib/matplotlib/tests/baseline_images/test_cycle/clear_all_cycle.pdf create mode 100644 lib/matplotlib/tests/baseline_images/test_cycle/clear_all_cycle.png create mode 100644 lib/matplotlib/tests/baseline_images/test_cycle/clear_all_cycle.svg create mode 100644 lib/matplotlib/tests/baseline_images/test_cycle/clear_one_cycle.pdf create mode 100644 lib/matplotlib/tests/baseline_images/test_cycle/clear_one_cycle.png create mode 100644 lib/matplotlib/tests/baseline_images/test_cycle/clear_one_cycle.svg create mode 100644 lib/matplotlib/tests/baseline_images/test_cycle/set_cycles.pdf create mode 100644 lib/matplotlib/tests/baseline_images/test_cycle/set_cycles.png create mode 100644 lib/matplotlib/tests/baseline_images/test_cycle/set_cycles.svg create mode 100644 lib/matplotlib/tests/test_cycle.py diff --git a/lib/matplotlib/tests/baseline_images/test_cycle/clear_all_cycle.pdf b/lib/matplotlib/tests/baseline_images/test_cycle/clear_all_cycle.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e46c94a24909b96b611a7c0ca9092555e0cd5a42 GIT binary patch literal 7099 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

K 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

!BpmMLH+3Z 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

qlK_$# zQfAK3_XDkRu3Y}tU z2`U(=6;|L=XxBr&qfQFucML(cyHU95K+;g|{>*v-Ww5q#U9zr~e^Yn#Y05r}D`4*E z9~w?lTogg~LQNztN6FV}(j1C|Nd<UX8Uf(*aaOSM zL0^DR8yyOBRx{u#T~E|R`-LP}*zUFhLMVazL&+nHjD~|zl^GG^n4!fdPTTz7Ufm`Q z^4XC|>=+Q|+zz>e4{4hLyN!-g@*i?=n_kBW-GdgK#?!F5=E$h}O>_>{5TR`zFU3*i zMfzSy^s#Udoh;*nUL|a~uU(PQdb!WW+Em^7c$JR-p8Wzj*tzyPEkTeIh4PFQu=&qs z=$xJ!K|pw6#I-(cWh?1l_T;={|F_TsHJ;RSERhp`B9p(9kytKnm*wk{y^#85!1D8h zhjjo(=hC^nNKR-QVE3!OPi6+KOS;lN@a%$Cr%gEux#{eUa9KLqkdj+6uG)zf;~E8xug=onv+&rRKq3v_SBo4O*e96SI+@oBr4XL!0&N#cWcaq)!~-fbAk zisWhArE?@hkEFI$f>8XHrB(fZ@oR+VO%!Mk)I=;VS%~13O}YuU(MVnns7`DQ`_htp zc&{k&UK<)VJ|i3u0`$iG#w<^pY~|jTzGWLOMDei zu%tvWP=qO7y+pBH``Gq6kVC7W{V z4pZkZyGtc~It`!y+?G?BxTY84LQ8`y3-k<9E@ZyC=@^S)`r4lfOgp{}84tgPesV0ho7?F-ellTgD zO$da=aPBPp6ZVLCh&~+!cS3(EK)alvqX+cd5W22|Jy$4&Mnma;%P|5IgQZBSh7Pq zPFDL3xRs~K9&7Lj({;3=j2Gmi zubf{sWcxcR-v~?$z#eKlKDVPg(<}eDyf~7ROUusV=bbnJUiIr}xc}T=zT!BIT! zM@(GjIYNmMRMSR>{`i&3I-PzT4Zk}*iZGXt8Rfoy1f8_nE|u1$0cQ3=6Ihl`lR6SR zKQeTmhpr?G#ix_`8YK}so&AFVqyfatlpC>$Cs=5ON?n07c5|>WbzSmbrl}I%udwjC zznmZ`vHT^k;FMEJ^koSXsW63HDumX{aD1}M6@2rAa?-pPcSIu88f9Ul+#cXfN{)T_YO^k- z7^O(~%;qli+KT%L z^5;2Ch{AYT2a(~yKfo>@kJs3l``+0;1wvmJ1K_w7CBDn|ht~nV2MN9JaHN+-d#Z${ z?TkcFKY}RYvXbYoKj8n?P$Mz7NfrA1i!8JZP~~DXHdCwubvThTaGo=X1RU7BH?VYGxxl{ z!9UA&fG}igm-r-V`I;>)^WTR|1MHI+c3J`|7TVNV5)w@P{#!m@z(t>jHdHtn!7FwH zZ2=H5NOquFWa^^N*5`ja4N zyt>@Of~sf9*H_iZv3zuZ9K718k$$ybW4I_*fjHbL6d+0?gWDq(l+A6tOO4=Z8<&<;e}@m%Zf}f# zB_E1KMv?AtqkxZ$FiZLK3kw{K52@n&9beZ*TBpk4&SPqB)@)A}B;#{Yw&OZmu|`?$ z*xSr9N`dJd#FY~Dk%k6-GADb>zja$y_#}2JEP8$o_`2jOePAtD%!yo+xuT_Yy5VIl z|LX_HJbz@L*B7v)~adc*eYY2!4~mJDUdCVEl|dZMBu>s5f{T`ak}jbzyFtMDEF9xyRi3@YLiO5-Ak_O{IHQnTc@XDEKa%`#Jy2@hK|>G(K%Q%gD(#H>3)yaq&!-o74;)j`9=>1_5!QcZ4F zmYHMUVWd}DKL=6uC{}zfWALY!k!j5cUlNb!AP8i)(Y-3m3^!TeH4H#*` zt!VPZg_H{ZmL{>^NjF1!zuUB9r3