From eb546b44846e07291144d8914c5acd9309c67e80 Mon Sep 17 00:00:00 2001 From: eudoxos Date: Mon, 25 Feb 2019 10:39:03 +0100 Subject: [PATCH] Added path.sketch_seed to rcParams Seed can be manually set for path.sketch by modifying the value of rcParams path.sketch_seed or by passing a seed value to xkcd or Artist.set_sketch . Seed will also have a rolling(auto incrementing) behaviour. Co-Authored-By: Oscar Gustafsson <8114497+oscargus@users.noreply.github.com> Co-Authored-By: eudoxos <1029876+eudoxos@users.noreply.github.com> --- .../next_api_changes/behavior/26050-AS.rst | 13 +++ doc/users/next_whats_new/sketch_seed.rst | 67 ++++++++++++++ lib/matplotlib/artist.py | 17 +++- lib/matplotlib/artist.pyi | 3 +- lib/matplotlib/backend_bases.py | 27 +++++- lib/matplotlib/backend_bases.pyi | 5 + lib/matplotlib/backends/backend_pgf.py | 2 +- lib/matplotlib/figure.py | 2 + lib/matplotlib/lines.py | 3 +- lib/matplotlib/mpl-data/matplotlibrc | 1 + lib/matplotlib/patches.py | 4 +- lib/matplotlib/path.py | 4 +- lib/matplotlib/path.pyi | 4 +- lib/matplotlib/pyplot.py | 9 +- lib/matplotlib/rcsetup.py | 10 ++ lib/matplotlib/rcsetup.pyi | 1 + .../tests/baseline_images/test_path/xkcd.png | Bin 31607 -> 32423 bytes .../baseline_images/test_path/xkcd_marker.png | Bin 22078 -> 23303 bytes lib/matplotlib/tests/test_backend_pgf.py | 2 +- lib/matplotlib/tests/test_path.py | 87 +++++++++++++++++- src/_backend_agg.h | 2 +- src/_backend_agg_basic_types.h | 1 + src/_path.h | 4 +- src/path_converters.h | 12 ++- src/py_converters.cpp | 7 +- 25 files changed, 259 insertions(+), 28 deletions(-) create mode 100644 doc/api/next_api_changes/behavior/26050-AS.rst create mode 100644 doc/users/next_whats_new/sketch_seed.rst diff --git a/doc/api/next_api_changes/behavior/26050-AS.rst b/doc/api/next_api_changes/behavior/26050-AS.rst new file mode 100644 index 000000000000..0f8424f4d047 --- /dev/null +++ b/doc/api/next_api_changes/behavior/26050-AS.rst @@ -0,0 +1,13 @@ +Seed for ``path.sketch`` will have a rolling (auto incrementing) behaviour +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The seed for the internal Pseudo number generator will now have an auto changing behavior. +This means that the C code of every artist will get a different seed every time it is called +and this will be done in a deterministic manner. + +Two figures sketched with the same parameters and different seed will look different from one another. + +``Artist.get_sketch_params()`` will now return a 4-tuple instead of a 3-tuple consisting of +(scale, length, randomness, seed) of the form (float, float, float, int). + +See 'What's new' on how to set a value to the seed and its behaviour. diff --git a/doc/users/next_whats_new/sketch_seed.rst b/doc/users/next_whats_new/sketch_seed.rst new file mode 100644 index 000000000000..97ebea87fe2c --- /dev/null +++ b/doc/users/next_whats_new/sketch_seed.rst @@ -0,0 +1,67 @@ +``sketch_seed`` parameter for rcParams +-------------------------------------- + +`~matplotlib.rcParams` now has a new parameter ``path.sketch_seed``. +Its default value is 0 and accepted values are any non negative integer. +This allows the user to set the seed for the internal pseudo random number generator in one of three ways. + +1) Directly changing the rcParam: + + rcParams['path.sketch_seed'] = 20 + +2) Passing a value to the new *seed* parameter of `~matplotlib.pyplot.xkcd` function: + + plt.xkcd(seed=20) + +3) Passing a value to the new *seed* parameter of matplotlib.artist.set_sketch_params function: + + ln = plt.plot(x, y) + ln[0].set_sketch_params(seed = 20) + +The seed will also have a changing characteristic for every artist which will be done in a deterministic manner. + + +.. plot:: + :include-source: true + + import matplotlib.pyplot as plt + from matplotlib import rcParams + + with plt.xkcd(): + rcParams['path.sketch_seed']=0 + rcParams['path.sketch']=(2,120,40) + pat,txt=plt.pie([10,20,30,40],wedgeprops={'edgecolor':'black'}) + plt.legend(pat,['first','second','third','fourth'],loc='best') + plt.title("seed = 0") + plt.show() + +.. plot:: + :include-source: true + + import matplotlib.pyplot as plt + from matplotlib import rcParams + + fig, ax = plt.subplots() + x = np.linspace(0.7, 1.42, 100) + y = x ** 2 + ln = ax.plot(x, y, color='black') + ln[0].set_sketch_params(100, 100, 20, 40) + plt.title("seed = 40") + plt.show() + +.. plot:: + :include-source: true + + import matplotlib.pyplot as plt + from matplotlib import rcParams + + with plt.xkcd(seed=19680801): + import matplotlib + from matplotlib import gridspec + + rcParams['path.sketch']=(2,120,40) + + pat,txt=plt.pie([10,20,30,40],wedgeprops={'edgecolor':'black'}) + plt.legend(pat,['first','second','third','fourth'],loc='best') + plt.title("seed = 19680801") + plt.show() diff --git a/lib/matplotlib/artist.py b/lib/matplotlib/artist.py index 5c3f6dc5952f..c53c3f88da7c 100644 --- a/lib/matplotlib/artist.py +++ b/lib/matplotlib/artist.py @@ -209,6 +209,7 @@ def __init__(self): self._gid = None self._snap = None self._sketch = mpl.rcParams['path.sketch'] + self._sketch_seed = mpl.rcParams['path.sketch_seed'] self._path_effects = mpl.rcParams['path.effects'] self._sticky_edges = _XYPair([], []) self._in_layout = True @@ -681,7 +682,8 @@ def get_sketch_params(self): """ return self._sketch - def set_sketch_params(self, scale=None, length=None, randomness=None): + def set_sketch_params(self, scale=None, length=None, randomness=None, + seed=None): """ Set the sketch parameters. @@ -701,12 +703,21 @@ def set_sketch_params(self, scale=None, length=None, randomness=None): The PGF backend uses this argument as an RNG seed and not as described above. Using the same seed yields the same random shape. - .. ACCEPTS: (scale: float, length: float, randomness: float) + seed : int, optional + Seed for the internal pseudo-random number generator. + + .. versionadded:: 3.8 + + .. ACCEPTS: (scale: float, length: float, randomness: float, seed: int) """ + if seed is not None: + self._sketch_seed = seed + if scale is None: self._sketch = None else: - self._sketch = (scale, length or 128.0, randomness or 16.0) + self._sketch = (scale, length or 128.0, randomness or 16.0, + self._sketch_seed) self.stale = True def set_path_effects(self, path_effects): diff --git a/lib/matplotlib/artist.pyi b/lib/matplotlib/artist.pyi index 101e97a9a072..a9d5d7ed47b6 100644 --- a/lib/matplotlib/artist.pyi +++ b/lib/matplotlib/artist.pyi @@ -76,12 +76,13 @@ class Artist: def set_gid(self, gid: str | None) -> None: ... def get_snap(self) -> bool | None: ... def set_snap(self, snap: bool | None) -> None: ... - def get_sketch_params(self) -> tuple[float, float, float] | None: ... + def get_sketch_params(self) -> tuple[float, float, float, int] | None: ... def set_sketch_params( self, scale: float | None = ..., length: float | None = ..., randomness: float | None = ..., + seed: int | None = ..., ) -> None: ... def set_path_effects(self, path_effects: list[AbstractPathEffect]) -> None: ... def get_path_effects(self) -> list[AbstractPathEffect]: ... diff --git a/lib/matplotlib/backend_bases.py b/lib/matplotlib/backend_bases.py index 009410593b34..dbf1788b97af 100644 --- a/lib/matplotlib/backend_bases.py +++ b/lib/matplotlib/backend_bases.py @@ -754,6 +754,19 @@ def _draw_disabled(self): return _setattr_cm(self, **no_ops) + @property + def _seed_increment(self): + """ + seed increment for renderer. + It is used to implement the rolling characteristic for seed + """ + self.__seed_increment += 1 + return self.__seed_increment + + @_seed_increment.setter + def _seed_increment(self, value): + self.__seed_increment = value + class GraphicsContextBase: """An abstract base class that provides color, line styles, etc.""" @@ -1062,7 +1075,8 @@ def get_sketch_params(self): """ return self._sketch - def set_sketch_params(self, scale=None, length=None, randomness=None): + def set_sketch_params(self, scale=None, length=None, randomness=None, + seed=None): """ Set the sketch parameters. @@ -1076,10 +1090,19 @@ def set_sketch_params(self, scale=None, length=None, randomness=None): The length of the wiggle along the line, in pixels. randomness : float, default: 16 The scale factor by which the length is shrunken or expanded. + seed : int, optional + Seed for the internal pseudo-random number generator. + + .. versionadded:: 3.8 """ + self._sketch = ( None if scale is None - else (scale, length or 128., randomness or 16.)) + else (scale, + length or rcParams['path.sketch'][1], + randomness or rcParams['path.sketch'][2], + seed or rcParams['path.sketch_seed']) + ) class TimerBase: diff --git a/lib/matplotlib/backend_bases.pyi b/lib/matplotlib/backend_bases.pyi index 0ae88cf18a42..3d47f39a1dae 100644 --- a/lib/matplotlib/backend_bases.pyi +++ b/lib/matplotlib/backend_bases.pyi @@ -136,6 +136,10 @@ class RendererBase: def stop_rasterizing(self) -> None: ... def start_filter(self) -> None: ... def stop_filter(self, filter_func) -> None: ... + @property + def _seed_increment(self) -> int: ... + @_seed_increment.setter + def _seed_increment(self, value: int) -> None: ... class GraphicsContextBase: def __init__(self) -> None: ... @@ -180,6 +184,7 @@ class GraphicsContextBase: scale: float | None = ..., length: float | None = ..., randomness: float | None = ..., + seed:int | None = ..., ) -> None: ... class TimerBase: diff --git a/lib/matplotlib/backends/backend_pgf.py b/lib/matplotlib/backends/backend_pgf.py index 734c188b0048..2c05d1b6e182 100644 --- a/lib/matplotlib/backends/backend_pgf.py +++ b/lib/matplotlib/backends/backend_pgf.py @@ -575,7 +575,7 @@ def _print_pgf_path(self, gc, path, transform, rgbFace=None): # and has a separate "scale" argument for the amplitude. # -> Use "randomness" as PRNG seed to allow the user to force the # same shape on multiple sketched lines - scale, length, randomness = sketch_params + scale, length, randomness, seed = sketch_params if scale is not None: # make matplotlib and PGF rendering visually similar length *= 0.5 diff --git a/lib/matplotlib/figure.py b/lib/matplotlib/figure.py index ce263c3d8d1c..244100444507 100644 --- a/lib/matplotlib/figure.py +++ b/lib/matplotlib/figure.py @@ -45,6 +45,7 @@ Artist, allow_rasterization, _finalize_rasterization) from matplotlib.backend_bases import ( DrawEvent, FigureCanvasBase, NonGuiException, MouseButton, _get_renderer) + import matplotlib._api as _api import matplotlib.cbook as cbook import matplotlib.colorbar as cbar @@ -3141,6 +3142,7 @@ def draw(self, renderer): artists = self._get_draw_artists(renderer) try: + renderer._seed_increment = 0 renderer.open_group('figure', gid=self.get_gid()) if self.axes and self.get_layout_engine() is not None: try: diff --git a/lib/matplotlib/lines.py b/lib/matplotlib/lines.py index 92d55a3fe6ae..f793d1cdf7f6 100644 --- a/lib/matplotlib/lines.py +++ b/lib/matplotlib/lines.py @@ -823,7 +823,8 @@ def draw(self, renderer): gc.set_foreground(ec_rgba, isRGBA=True) if self.get_sketch_params() is not None: scale, length, randomness = self.get_sketch_params() - gc.set_sketch_params(scale/2, length/2, 2*randomness) + seed = self._sketch_seed + gc.set_sketch_params(scale/2, length/2, 2*randomness, seed) marker = self._marker diff --git a/lib/matplotlib/mpl-data/matplotlibrc b/lib/matplotlib/mpl-data/matplotlibrc index 2c53651da3d6..f9ad70f00f24 100644 --- a/lib/matplotlib/mpl-data/matplotlibrc +++ b/lib/matplotlib/mpl-data/matplotlibrc @@ -677,6 +677,7 @@ # - *randomness* is the factor by which the length is # randomly scaled. #path.effects: +#path.sketch_seed: 0 # seed for the internal pseudo number generator. ## *************************************************************************** diff --git a/lib/matplotlib/patches.py b/lib/matplotlib/patches.py index 92dc55940b8a..802fa34b79f5 100644 --- a/lib/matplotlib/patches.py +++ b/lib/matplotlib/patches.py @@ -563,7 +563,9 @@ def _draw_paths_with_artist_properties( gc.set_hatch_color(self._hatch_color) if self.get_sketch_params() is not None: - gc.set_sketch_params(*self.get_sketch_params()) + scale, length, randomness = self.get_sketch_params() + gc.set_sketch_params(scale, length, randomness, + self._sketch_seed+renderer._seed_increment) if self.get_path_effects(): from matplotlib.patheffects import PathEffectRenderer diff --git a/lib/matplotlib/path.py b/lib/matplotlib/path.py index a687db923c3c..f907e27dc362 100644 --- a/lib/matplotlib/path.py +++ b/lib/matplotlib/path.py @@ -382,8 +382,8 @@ def iter_segments(self, transform=None, remove_nans=True, clip=None, If True, curve segments will be returned as curve segments. If False, all curves will be converted to line segments. sketch : None or sequence, optional - If not None, must be a 3-tuple of the form - (scale, length, randomness), representing the sketch parameters. + If not None, must be a 4-tuple of the form + (scale, length, randomness, seed), representing the sketch parameters. """ if not len(self): return diff --git a/lib/matplotlib/path.pyi b/lib/matplotlib/path.pyi index c96c5a0ba9e4..91256e7fd1cd 100644 --- a/lib/matplotlib/path.pyi +++ b/lib/matplotlib/path.pyi @@ -61,7 +61,7 @@ class Path: stroke_width: float = ..., simplify: bool | None = ..., curves: bool = ..., - sketch: tuple[float, float, float] | None = ..., + sketch: tuple[float, float, float, int] | None = ..., ) -> Generator[tuple[np.ndarray, np.uint8], None, None]: ... def iter_bezier(self, **kwargs) -> Generator[BezierSegment, None, None]: ... def cleaned( @@ -74,7 +74,7 @@ class Path: curves: bool = ..., stroke_width: float = ..., snap: bool | None = ..., - sketch: tuple[float, float, float] | None = ... + sketch: tuple[float, float, float, int] | None = ... ) -> Path: ... def transformed(self, transform: Transform) -> Path: ... def contains_point( diff --git a/lib/matplotlib/pyplot.py b/lib/matplotlib/pyplot.py index 415d5c042241..618cc1bb35e3 100644 --- a/lib/matplotlib/pyplot.py +++ b/lib/matplotlib/pyplot.py @@ -701,8 +701,8 @@ def setp(obj, *args, **kwargs): def xkcd( - scale: float = 1, length: float = 100, randomness: float = 2 -) -> ExitStack: + scale: float = 1, length: float = 100, randomness: float = 2, + seed: int | None = None) -> ExitStack: """ Turn on `xkcd `_ sketch-style drawing mode. This will only have effect on things drawn after this function is called. @@ -718,6 +718,8 @@ def xkcd( The length of the wiggle along the line. randomness : float, optional The scale factor by which the length is shrunken or expanded. + seed: int, optional + Seed for the internal pseudo-random number generator. Notes ----- @@ -738,6 +740,9 @@ def xkcd( # This cannot be implemented in terms of contextmanager() or rc_context() # because this needs to work as a non-contextmanager too. + if seed is not None: + rcParams['path.sketch_seed'] = seed + if rcParams['text.usetex']: raise RuntimeError( "xkcd mode is not compatible with text.usetex = True") diff --git a/lib/matplotlib/rcsetup.py b/lib/matplotlib/rcsetup.py index 276bb9f812a9..09e5ebbd1eb9 100644 --- a/lib/matplotlib/rcsetup.py +++ b/lib/matplotlib/rcsetup.py @@ -565,6 +565,15 @@ def validate_sketch(s): raise ValueError("Expected a (scale, length, randomness) triplet") +def validate_sketch_seed(s): + s = validate_int(s) + + if s >= 0: + return s + else: + raise ValueError("seed must be a non negative integer") + + def _validate_greaterthan_minushalf(s): s = validate_float(s) if s > -0.5: @@ -1288,6 +1297,7 @@ def _convert_validator_spec(key, conv): "path.simplify_threshold": _validate_greaterequal0_lessequal1, "path.snap": validate_bool, "path.sketch": validate_sketch, + "path.sketch_seed": validate_sketch_seed, "path.effects": validate_anylist, "agg.path.chunksize": validate_int, # 0 to disable chunking diff --git a/lib/matplotlib/rcsetup.pyi b/lib/matplotlib/rcsetup.pyi index 8a8a9e71d666..340f131670a0 100644 --- a/lib/matplotlib/rcsetup.pyi +++ b/lib/matplotlib/rcsetup.pyi @@ -140,6 +140,7 @@ def _validate_linestyle(s: Any) -> LineStyleType: ... def validate_markeverylist(s: Any) -> list[MarkEveryType]: ... def validate_bbox(s: Any) -> Literal["tight", "standard"] | None: ... def validate_sketch(s: Any) -> None | tuple[float, float, float]: ... +def validate_sketch_seed(s: Any) -> int: ... def validate_hatch(s: Any) -> str: ... def validate_hatchlist(s: Any) -> list[str]: ... def validate_dashlist(s: Any) -> list[list[float]]: ... diff --git a/lib/matplotlib/tests/baseline_images/test_path/xkcd.png b/lib/matplotlib/tests/baseline_images/test_path/xkcd.png index fd486c42305f3e044da837f92a6e1882ec6a73e9..f57d07aab8f2c5b835fb793d82ca5f8ba93adfb3 100644 GIT binary patch literal 32423 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 literal 31607 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 diff --git a/lib/matplotlib/tests/baseline_images/test_path/xkcd_marker.png b/lib/matplotlib/tests/baseline_images/test_path/xkcd_marker.png index c4224f74c1ecca629bab4157638cd2d68830f3b9..a163a22542172d1908b270f56a0cedcf9ed07b2d 100644 GIT binary patch literal 23303 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 Ss0%Q17(8A5T-G@yGywpSO_G2B literal 22078 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 } }; + template class Sketch { @@ -1004,8 +1005,10 @@ class Sketch randomness: the factor that the sketch length will randomly shrink and expand. + + seed: seed for the built-in pseudo-random number generator. */ - Sketch(VertexSource &source, double scale, double length, double randomness) + Sketch(VertexSource &source, double scale, double length, double randomness, int seed) : m_source(&source), m_scale(scale), m_length(length), @@ -1015,9 +1018,9 @@ class Sketch m_last_y(0.0), m_has_last(false), m_p(0.0), - m_rand(0) + m_rand(0), + m_seed(seed) { - rewind(0); const double d_M_PI = 3.14159265358979323846; m_p_scale = (2.0 * d_M_PI) / (m_length * m_randomness); m_log_randomness = 2.0 * log(m_randomness); @@ -1081,7 +1084,7 @@ class Sketch m_has_last = false; m_p = 0.0; if (m_scale != 0.0) { - m_rand.seed(0); + m_rand.seed(m_seed); m_segmented.rewind(path_id); } else { m_source->rewind(path_id); @@ -1101,6 +1104,7 @@ class Sketch RandomNumberGenerator m_rand; double m_p_scale; double m_log_randomness; + int m_seed; }; #endif // MPL_PATH_CONVERTERS_H diff --git a/src/py_converters.cpp b/src/py_converters.cpp index 04382c5f94d0..8dff06939d9a 100644 --- a/src/py_converters.cpp +++ b/src/py_converters.cpp @@ -451,13 +451,16 @@ int convert_sketch_params(PyObject *obj, void *sketchp) { SketchParams *sketch = (SketchParams *)sketchp; + sketch->seed=0; // default + if (obj == NULL || obj == Py_None) { sketch->scale = 0.0; } else if (!PyArg_ParseTuple(obj, - "ddd:sketch_params", + "ddd|i:sketch_params", &sketch->scale, &sketch->length, - &sketch->randomness)) { + &sketch->randomness, + &sketch->seed)) { return 0; }