Releases: Davide-sd/sympy-plot-backends
SymPy Plot Backends v4.0.0
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.seriesmodules, 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)orplot_function?. All available parameters will be shown. - Capability of adding widgets related to attributes of data series.
- Clearer code base, in particular inside the
-
Improvements to the function
graphics()and the backends:-
Improved the handling of grid lines thanks to the keyword arguments
gridandminor_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 argumentsx_ticks_formatterandy_ticks_formatterof the functiongraphics(). A few preconfigured formatter are available as well, likemultiples_of_pi_over_2,multiples_of_pi_over_3, etc. -
Added
hookskeyword 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
appkeyword 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 ofdomain_coloringto see an example. -
Added
use_latex_on_widgetskeyword argument, which clearly separates the scope with respect touse_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:- easier to use the plotting module, as there are 3/4 keyword arguments less to be worried about.
- cleaner and simpler code base.
- easier to implement new features (interactive ones), that only works with the uniform evaluation strategy.
-
BREAKING: Split the
GeometrySeriesintoGeometry2DSeriesandGeometry3DSeriesfor better code separation. -
BREAKING: Changed the init signature of
NicholsLineSeries. -
Added attribute
Geometry2DSeries.range_xwhich allows to plot aLine2Din 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_pointtois_scatterto 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
excludekeyword argument.
-
-
BREAKING: remove
tpkeyword argument fromstep_response,ramp_response,impulse_response.
SymPy Plot Backends v3.4.5
What's Changed
- Fixed bug with
surface_sphericalnot setting the provided value forrendering_kw.
SymPy Plot Backends v3.4.4
What's Changed
- Fixed bug with
ImplicitSeries’s evaluation of boolean expressions
Sympy Plot Backends v3.4.3
What's Changed
- Fixed bug with retrieval of free symbols from the symbolic expressions.
Sympy Plot Backends v3.4.2
What's Changed
- small update to
PlotlyBackendand related renderers in order to keep it up-to-date with Plotly.
Thanks to zarstensen for the fix. - small update to
Implicid2DRendererin order to keep it up-to-date with Matplotlib. - Improved robustness of colormap conversion.
Sympy Plot Backends v3.4.1
What's Changed
- Adjusted code to run with SymPy>=1.13
- Added support for Numpy>=2.0.0
Sympy Plot Backends v3.4.0
What's Changed
- Implemented animations.
BokehBackendis now able to create contour plots.
Sympy Plot Backends v3.3.0
What's Changed
-
Control system plotting
- Fixed bug with missing title of
plot_root_locus. - Implemented
sgridbased on Matplotlib projection. - Improved
sgridsupport on Bokeh interactive plots. - Improved labeling of MIMO systems.
step_response, impulse_response, ramp_responseare 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.
- Fixed bug with missing title of
-
Improvements of interactive plots:
-
Added support for multiple-values widgets, like
RangeSlider. -
Improvements of
spb.interactive.panel:- Simplified underlying architecture. Previously,
InteractivePlotinherited fromparam.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.
- Simplified underlying architecture. Previously,
-
Improvements to documentation.
-
-
Fixed bug with legend of
plot_vector.
Sympy Plot Backends v3.2.0
What's Changed
-
add
update_eventkeyword argument to enable/disable auto-update on panning for plots created withMatplotlibBackend,PlotlyBackendandBokehBackend. 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 withipywidgetsas well aspanel. Previously,formatterwas not supported byipywidgets. -
Added
arrows=keyword argument tonicholsandplot_nichols. -
Added
show_minus_one=keyword argument tomcircles. -
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
What's Changed
- Fix incorrect behavior of "arrow_3d".