From 7a203e42a77c10c30b9c4368fce75d9435141174 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Mon, 6 Jun 2016 22:56:37 -0400 Subject: [PATCH 1/2] API: change the dot patterns - change the dotted pattern to [[1.1, 1.1]] - change scale floor to a lw of 2.0 --- lib/matplotlib/lines.py | 2 +- lib/matplotlib/rcsetup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/matplotlib/lines.py b/lib/matplotlib/lines.py index df4b27cdef18..e25f689eedbc 100644 --- a/lib/matplotlib/lines.py +++ b/lib/matplotlib/lines.py @@ -68,7 +68,7 @@ def _get_dash_pattern(style): def _scale_dashes(offset, dashes, lw): if rcParams['_internal.classic_mode']: return offset, dashes - scale = max(1.0, lw) + scale = max(2.0, lw) scaled_offset = scaled_dashes = None if offset is not None: scaled_offset = offset * scale diff --git a/lib/matplotlib/rcsetup.py b/lib/matplotlib/rcsetup.py index 8d2f642351e0..97413692496f 100644 --- a/lib/matplotlib/rcsetup.py +++ b/lib/matplotlib/rcsetup.py @@ -901,7 +901,7 @@ def validate_hist_bins(s): 'lines.solid_capstyle': ['projecting', validate_capstyle], 'lines.dashed_pattern': [[2.8, 1.2], validate_nseq_float()], 'lines.dashdot_pattern': [[4.8, 1.2, 0.8, 1.2], validate_nseq_float()], - 'lines.dotted_pattern': [[1.2, 0.6], validate_nseq_float()], + 'lines.dotted_pattern': [[1.1, 1.1], validate_nseq_float()], # marker props 'markers.fillstyle': ['full', validate_fillstyle], From 13b8c913aa1ea80621ce067b52e1432d40150510 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Fri, 15 Jul 2016 21:56:47 -0500 Subject: [PATCH 2/2] TST: add test for lw scaling of dash patterns --- .../test_lines/scaled_lines.pdf | Bin 0 -> 10384 bytes .../test_lines/scaled_lines.png | Bin 0 -> 26768 bytes .../test_lines/scaled_lines.svg | 1989 +++++++++++++++++ lib/matplotlib/tests/test_lines.py | 17 +- 4 files changed, 2004 insertions(+), 2 deletions(-) create mode 100644 lib/matplotlib/tests/baseline_images/test_lines/scaled_lines.pdf create mode 100644 lib/matplotlib/tests/baseline_images/test_lines/scaled_lines.png create mode 100644 lib/matplotlib/tests/baseline_images/test_lines/scaled_lines.svg diff --git a/lib/matplotlib/tests/baseline_images/test_lines/scaled_lines.pdf b/lib/matplotlib/tests/baseline_images/test_lines/scaled_lines.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c82443381bea4a68ede8e3c20751a4bc64e1c202 GIT binary patch literal 10384 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 D%pbq7 literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/baseline_images/test_lines/scaled_lines.png b/lib/matplotlib/tests/baseline_images/test_lines/scaled_lines.png new file mode 100644 index 0000000000000000000000000000000000000000..f75601b677176ba4b1a62520e65c8305fc82b9c2 GIT binary patch literal 26768 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

+0lY*8V90=!-YX~i`j7RI*i76(7fel6 zHPrU7=)>C=^dvU@nF*d575XA>(tt=%IAS-vopkvDh={%dA>>C0R_8Xd!4Q^Mwe!r( zM!26^#Ut+u3%l>-Z*wpU8@H4^sw@Wz9fzqJnvIQ(P2t2_mjUj;-M#YBv9`c@049BM ze3%Ll{T4^RR=iKJT@^M1P%2j15JLk4DhP|X_1USrB28;c6m^Ky{(ep3piI^`ymzvCpcWfn>Ue9dQylZ?qhyFdGSN|XMoQK zR_&|Qj!4QbNqN(GCMGbjE`o(br1^jc4;qR`Of12%GrF9)oKjn`VaK({`HeEwuvDF4 zrFHCt8wj0&xOj#0tRf&1d{zkC7IlE_IZk})aPR>i2{^m0%;IpiurW{00uD z1bB0RD|qx_ps5lKIPq3=TV5hQr)xi`DEWcGh(t?$pO}aQjK;jiMh>ok18!v%6>y#L zkIa|d>_i~MN$jzF|8AP-DPkZEEGgygXw3=G!=FJ93!Fai+&z15ph#*@)k!L)d4YYRr&@40sOzoL$Q5LD9(fM+dtThfqD?QH@J z4G_lA0ukBjs$Gd;^=VK~)B&V3(l>*%~lPiF&jS^jYG z^?0+t959C5p)Gern#h1T01eSlw}^P#RB!9x(4OJk90?Yy&rc=hPY!ns0IL$nU_>1! zC8SeNMh%<&WEGE=FRlZOD_FDzE?>T(u1>wWy80OP$K0KPJbvk`5|C<1u~gyfIm=OvP!Bmc~*kCE+@+ z>N?*}?ZteY@}NjJarcwsloWTU-&9PKZ-V=C24y016PS!pU|1nU6Ef=X2FafzQU#13q zwJH3ntFWY`9guJtn3==7yKj3jcjcA$8N7CXUQ}GH^5h90Xa}*!-Sl5*p$_5*>3=+- zKY09qjSc-zHr)S`^ZI8^{3k~AFV5Hh;+5YJDEDUXdpgkUc0<6Q`b|yMQf2cO{|B{r B%HjY3 literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/baseline_images/test_lines/scaled_lines.svg b/lib/matplotlib/tests/baseline_images/test_lines/scaled_lines.svg new file mode 100644 index 000000000000..c77f9edd7b51 --- /dev/null +++ b/lib/matplotlib/tests/baseline_images/test_lines/scaled_lines.svg @@ -0,0 +1,1989 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/matplotlib/tests/test_lines.py b/lib/matplotlib/tests/test_lines.py index 084a97b681fd..db0c839cd5ff 100644 --- a/lib/matplotlib/tests/test_lines.py +++ b/lib/matplotlib/tests/test_lines.py @@ -11,9 +11,12 @@ from nose.tools import assert_true, assert_raises from timeit import repeat import numpy as np +from cycler import cycler +import matplotlib import matplotlib.pyplot as plt from matplotlib.testing.decorators import cleanup, image_comparison + import sys @@ -178,13 +181,23 @@ def test_marker_fill_styles(): ax.set_xlim([-5, 135]) +@image_comparison(baseline_images=['scaled_lines'], style='default') +def test_lw_scaling(): + th = np.linspace(0, 32) + fig, ax = plt.subplots() + lins_styles = ['dashed', 'dotted', 'dashdot'] + cy = cycler(matplotlib.rcParams['axes.prop_cycle']) + for j, (ls, sty) in enumerate(zip(lins_styles, cy)): + for lw in np.linspace(.5, 10, 10): + ax.plot(th, j*np.ones(50) + .1 * lw, linestyle=ls, lw=lw, **sty) + + def test_nan_is_sorted(): - line = mlines.Line2D([],[]) + line = mlines.Line2D([], []) assert_true(line._is_sorted(np.array([1, 2, 3]))) assert_true(line._is_sorted(np.array([1, np.nan, 3]))) assert_true(not line._is_sorted([3, 5] + [np.nan] * 100 + [0, 2])) - if __name__ == '__main__': nose.runmodule(argv=['-s', '--with-doctest'], exit=False)