Skip to content

Releases: Davide-sd/sympy-plot-backends

SymPy Plot Backends v4.0.0

26 Sep 09:36

Choose a tag to compare

What's Changed

  • Refactoring of the plotting module in order to use the param module. While this add a new mandatory dependency (previously, it was installed and used only by the interactive module), it brings many benefits:

    • Clearer code base, in particular inside the spb.series modules, becaue each attributes is now very well documented.
    • Automatic and complete generation of the documentation when the module is imported, on all classes and plotting function. The documentation is shown when the user executes help(plot_function) or plot_function?. All available parameters will be shown.
    • Capability of adding widgets related to attributes of data series.
  • Improvements to the function graphics() and the backends:

    • Improved the handling of grid lines thanks to the keyword arguments grid and minor_grid. These parameters can be:

      • boolean: toggle the visibility of major and minor grid lines.
      • dict: keyword arguments used to customize the grid lines.
    • Added capability to set axis ticks to multiple of some quantity (for example pi/2) thanks to the keyword arguments x_ticks_formatter and y_ticks_formatter of the function graphics(). A few preconfigured formatter are available as well, like multiples_of_pi_over_2, multiples_of_pi_over_3, etc.

    • Added hooks keyword argument: it accepts a list of user defined functions that are going to further customize the appearance of the plot. For example, users can change the tick labels on the colorbars, etc.

    • Added app keyword argument: if set to True, an interactive application will be shown, with widgets that allows to customize the numerical data generation process for each data series. Look at the documentation of domain_coloring to see an example.

    • Added use_latex_on_widgets keyword argument, which clearly separates the scope with respect to use_latex.

  • Improvements to spb.series (numerical data generation):

    • Added support for plotting summations with infinite bounds on all series (thus, all plotting function as well).

    • Improved evaluation of symbolic expressions producing very large numbers.

    • Improved logic dealing with lambdification in order minimize the time spent in this stage.

    • BREAKING: Removed the adaptive algorithm from line, line_parametric_2d, line_parametric_3d, surface (and their respective counterpars, plot, plot_parametric, plot3d_parametric, plot3d).
      Main motivations were:

      1. easier to use the plotting module, as there are 3/4 keyword arguments less to be worried about.
      2. cleaner and simpler code base.
      3. easier to implement new features (interactive ones), that only works with the uniform evaluation strategy.
    • BREAKING: Split the GeometrySeries into Geometry2DSeries and Geometry3DSeries for better code separation.

    • BREAKING: Changed the init signature of NicholsLineSeries.

    • Added attribute Geometry2DSeries.range_x which allows to plot a Line2D in the specified range along the x-axis.

    • Added attribute LineOver1DRangeSeries.poles_rendering_kw, which is a dictionary of keyword arguments passed to the specific plotting library renderer in order to customize the appearance of vertical lines representing essential discontinuities.

    • Renamed attribute is_point to is_scatter to better represent its intention.

    • Fixed bugs:

      • with the numerical algorithm about singularities detection of 2D parametric lines.
      • with the algorithm used to insert exclusion points through the exclude keyword argument.
  • BREAKING: remove tp keyword argument from step_response, ramp_response, impulse_response.

SymPy Plot Backends v3.4.5

11 Aug 11:38

Choose a tag to compare

What's Changed

  • Fixed bug with surface_spherical not setting the provided value for rendering_kw.

SymPy Plot Backends v3.4.4

17 Jul 20:11

Choose a tag to compare

What's Changed

  • Fixed bug with ImplicitSeries’s evaluation of boolean expressions

Sympy Plot Backends v3.4.3

05 May 17:45

Choose a tag to compare

What's Changed

  • Fixed bug with retrieval of free symbols from the symbolic expressions.

Sympy Plot Backends v3.4.2

11 Apr 12:28

Choose a tag to compare

What's Changed

  • small update to PlotlyBackend and related renderers in order to keep it up-to-date with Plotly.
    Thanks to zarstensen for the fix.
  • small update to Implicid2DRenderer in order to keep it up-to-date with Matplotlib.
  • Improved robustness of colormap conversion.

Sympy Plot Backends v3.4.1

10 Jul 09:05

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

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

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

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

Choose a tag to compare

What's Changed

  • Fix incorrect behavior of "arrow_3d".