Skip to content

Releases: Davide-sd/sympy-plot-backends

Sympy Plot Backends v3.4.1

10 Jul 09:05
Compare
Choose a tag to compare

What's Changed

  • Adjusted code to run with SymPy>=1.13
  • Added support for Numpy>=2.0.0

Sympy Plot Backends v3.4.0

06 May 08:56
Compare
Choose a tag to compare

What's Changed

  • Implemented animations.
  • BokehBackend is now able to create contour plots.

Sympy Plot Backends v3.3.0

14 Apr 17:56
Compare
Choose a tag to compare

What's Changed

  • Control system plotting

    • Fixed bug with missing title of plot_root_locus.
    • Implemented sgrid based on Matplotlib projection.
    • Improved sgrid support on Bokeh interactive plots.
    • Improved labeling of MIMO systems.
    • step_response, impulse_response, ramp_response are now able to compute an appropriate upper time limit for the simulation.
    • Updated code to use control 0.10.0. As a consequence, Python 3.9 is no longer supported by this module.
  • Improvements of interactive plots:

    • Added support for multiple-values widgets, like RangeSlider.

    • Improvements of spb.interactive.panel:

      • Simplified underlying architecture. Previously, InteractivePlot inherited from param.Parameterized: widgets were class attributes. Instantiating a new interactive plot would make the previous instance completely unusable. This inheritance has been removed. Now, widgets are instance attributes. Multiple instances work perfectly fine.
      • Added support for widgets of Holoviz Panel.
      • Updated plotgrid to work with the new architecture.
    • Improvements to documentation.

  • Fixed bug with legend of plot_vector.

Sympy Plot Backends v3.2.0

02 Apr 19:33
Compare
Choose a tag to compare

What's Changed

  • add update_event keyword argument to enable/disable auto-update on panning for plots created with MatplotlibBackend, PlotlyBackend and BokehBackend. By default, this functionality is turned off, update_event=False.

  • Improved the logic handling the creation of sliders on interactive-widget plots. Consider this code: params = {k: (1, 0, 5, formatter, label). It now works both with ipywidgets as well as panel. Previously, formatter was not supported by ipywidgets.

  • Added arrows= keyword argument to nichols and plot_nichols.

  • Added show_minus_one= keyword argument to mcircles.

  • Implemented renderers for Bokeh in order to deal with control system plotting.

  • Improved tooltips in BokehBackend.

  • Breaking: refactoring of NicholsLineSeries. Previously, it returned data about the open-loop transfer function. Now, it also returns data about the closed-loop transfer function, which can be used on tooltips.

Sympy Plot Backends v3.1.1

19 Mar 09:08
Compare
Choose a tag to compare

What's Changed

  • Fix incorrect behavior of "arrow_3d".

Sympy Plot Backends v3.1.0

18 Mar 20:13
Compare
Choose a tag to compare

What's Changed

  • User can now specify an existing figure over which symbolic expressions will be plotted. Just use the ax= or fig= keyword argument.

  • Added arrow_3d to spb.graphics.vectors in order to plot a single arrow in a three-dimensional space.

  • Enhanced capabilities of line plots with the steps keyword argument. Possible values are "pre", "post", "mid", mimicking Matplotlib's step function.

  • New features on the spb.graphics.control sub-module:

    • It now depends on the python-control module. This dependency allows the implementation of new plotting functions and to seamlessly deal with transfer functions from sympy, control and
      scipy.signal, supporting both continous-time and discrete-time systems.

    • Added support for MIMO systems.

    • Created sgrid, zgrid, ngrid, mcircles functions to easily create grids for control system plots. Appropriate keyword arguments have been created on all major plot functions in order to activate these grids.

    • Added plot_root_locus to the control submodule.

    • plot_bode now auto-computes an appropriate frequency range.

    • Removed the transfer function's Latex representation from the title of plots related to control systems. This decision is motivated from practical experience, where most of the transfer functions have floating point coefficients, which makes their Latex representation too big to fit into the small width of a plot.

  • Refactoring of the series.py sub-module:

    • code has been re-organized to make extensibility easier and slightly improve performance. In particular, the mixin class CommonUniformEvaluation has been introduced, which handles all the machinery necessary to evaluate symbolic expressions. Series classes may or may not inherit from it. CommonUniformEvaluation allows for a better separation of scopes: data series that don't need that code are faster to instantiate.

    • Breaking: refactoring of NyquistLineSeries in order to use the control module. In particular, the get_data method now returns many more arrays.

    • Breaking: removed attribute use_quiver_solid_color from Vector2DSeries.

  • Fixed bug with labels of 2D vector fields.

Sympy Plot Backends v3.0.1

07 Feb 14:03
Compare
Choose a tag to compare

What's Changed

v3.0.1

  • Added new coloring option to domain_coloring. Setting coloring="k+log" will apply a logarithm to the magnitude of the complex function. This improves the visibility of zeros in complex functions that have very steep poles.

  • Added the hyper function to the list of functions to be evaluated with real numbers. This avoids unexpected errors.

  • Set unwrap=True as defaul option for plot_bode: this helps to get a continuous phase plot.

  • Enabled plot_bode to deal with system containing time delays.

  • Enabled panel's interactive applications to render Latex labels on widgets when served on a new window.

  • Fixed bug with evaluation of user-defined python's function.

  • Fixed bug with labels of plot_implicit.

  • Fixed bug with labels of plot_piecewise.

  • Fixed bug with difficult to render labels on Matplotlib. If Matplotlib detects an error while parsing legend's entries, the plot won't show the legend.

  • Fixed bug with plot_bode_phase when phase_units="deg" and unwrap=True.

  • Added settings for bode plot's phase_unit and freq_unit to the defaults submodule.

  • Fixed bug with title of Bode plots.

  • Fixed title of plot_step_response.

  • Implemented workaround for holoviz's Panel interactive applications to be able to work with a currently open bug.

Sympy Plot Backends v3.0.0

21 Sep 07:39
Compare
Choose a tag to compare

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 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.

Sympy Plot Backends v2.4.3

28 Jul 10:01
Compare
Choose a tag to compare

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.

Sympy Plot Backends v2.4.2

09 Jul 14:13
Compare
Choose a tag to compare

What's Changed

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