Sympy-plot-backends

Latest version: v3.4.1

Safety actively analyzes 706267 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 2 of 9

3.0.0

What's Changed

* Introducing the **graphics module**, which aims to solve the following problems about ordinary plotting functions (whose name's start with ``plot_``):

1. Some functions perform too many tasks, making them difficult and confusing to use.
2. The documentation is difficult to maintain because many keywords arguments are repeated on all plotting functions.
3. The procedures to combine multiple plots together is far from ideal.

The *graphics module* implements new functions into appropriate submodules. Each function solves a very specific task and is able to plot only one symbolic expression. Each function returns a list containing one or more data series, depending on the required visualization. In order to render the data series on the screen, they must be passed into the ``graphics`` function. Plenty of examples about its usage are available on the documentation.

* Added ``arrow_2d`` to ``spb.graphics.vectors`` in order to plot a single arrow in a two-dimensional space.

* Reorganized old plotting functions (whose name's start with ``plot_``) into a new submodule: ``spb.plot_functions``. In particular:

* Deprecated ``spb.vectors``. Its content is now into ``spb.plot_functions.vectors``.
* Deprecated ``spb.functions``. Its content is now into ``spb.plot_functions.functions_2d`` and ``spb.plot_functions.functions_3d``.
* Deprecated ``spb.control``. Its content is now into ``spb.plot_functions.control``.
* Deprecated ``spb.ccomplex.complex``. Its content is now into ``spb.plot_functions.complex_analysis``.
* Deprecated ``spb.ccomplex.wegert``. Its content is now into ``spb.wegert``.

Under the hood, many of these plotting functions now uses the *graphics module*.

* Bug fix on ``MatplotlibBackend`` about updating y-axis limits. Thanks to [Chrillebon](https://github.com/Chrillebon) for the fix.

* Improved performance of the evaluation with ``adaptive=False`` (the default one). Removed ``np.vectorize`` when the evaluation module is NumPy/Scipy in order to take full advantage of Numpy's vectorized operations.

* Keyword argument ``is_point`` now has an alias: ``scatter``. Setting ``scatter=True`` will render a sequence of points as a scatter rather than a line.

* Improved warning messages to provide more useful information.

* Fixed import-related bug with older versions of SymPy.

2.4.3

What's Changed

* Bug fix: set axis scales only if the appropriate keyword arguments are provided. This allows to create symbolic plots with categorical axis.

* Fixed deprecation warning of one example using Holoviz panel and Bokeh formatters.

* Added new tutorial to documentation.

* Added the ``unwrap`` keyword argument to ``plot_bode`` in order to get a continous phase plot.

2.4.2

What's Changed

* Fixed bug with renderers and the ``extend`` and ``append`` methods of plot objects.

2.4.1

What's changed

* Bug fix with the import of an optional module.

2.4.0

What's Changed

* Enabled interactive-widgets ``plotgrid``. In particular, this allows to create interactive widget plots with ``plot_bode`` and ``plot_riemann_sphere``.

* Enabled support for plotting applied undefined functions.

* Implemented parametric text for titles and axis labels.

* Implemented the ``exclude`` keyword argument for ``plot`` and ``plot_parametric``. It accepts a list of values at which a discontinuity will be introduced. This complementes the poles detection algorithm.

* Bug fixes

* fixed bug with axis labels of ``plot_real_imag`` when creating contour plots.

* fixed bug with colorbar label of 3d plots with lambda functions.

2.3.0

What's Changed

* Improvements to the ``plot`` function:

* Implemented reversed x-axis. Usually, a plot range is given with the form ``(symbol, min_val, max_val)``, with ``min_val`` on the left of the plot. If a range is given with ``(symbol, max_val, min_val)``, then the x-axis will be reversed.

* The ``plot`` function is now able to show vertical lines at discontinuities when ``detect_poles="symbolic"``, at least for simple symbolic expressions.

* Introducing the ``Renderer`` class. Up to version `2.2.0`, all the rendering logic was located into each backend class, making it very difficult if not impossible to extend the capabilities for final users. From this version, each data series is going to be paired with an instance of ``Renderer``: users can create new data series and renderers. Then, by informing the backend of their existance, users can create new plot functions or modify the rendering of the old ones.

* Introducing the control module, which contains plotting functions for some of the common plots used in control system. This is an improved version of what is currently present on SymPy (version 1.12), because:

* it allows to plot multiple systems simultaneously, making it easier to compare different transfer functions.
* it works both on Matplotlib, Plotly and Bokeh.
* it allows to create interactive-widgets plots, allowing the study of parametric systems.

Thanks to all SymPy developers that worked on the ``sympy.physics.control.control_plots`` module.

Further, it includes ``plot_nyquist`` and ``plot_nichols``, which currently only works with Matplotlib. Their underlying rendering logic comes from the [python-control package](https://github.com/python-control/python-control). Huge thanks to all the ``python-control`` developers that worked on those functions.

* Upgrading dependency of Holoviz's Panel to version greater or equal than 1.0.0.

* Bug fixes:

* complex surfaces can now be plotted with ``plot_contour``.

* custom rendering keyword arguments can be passed to ``plot_geometry``.

Page 2 of 9

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.