Releases: Davide-sd/sympy-plot-backends
Sympy Plot Backends v3.4.1
Sympy Plot Backends v3.4.0
What's Changed
- Implemented animations.
BokehBackend
is 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
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.
- 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,
InteractivePlot
inherited 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_event
keyword argument to enable/disable auto-update on panning for plots created withMatplotlibBackend
,PlotlyBackend
andBokehBackend
. 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 withipywidgets
as well aspanel
. Previously,formatter
was not supported byipywidgets
. -
Added
arrows=
keyword argument tonichols
andplot_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".
Sympy Plot Backends v3.1.0
What's Changed
-
User can now specify an existing figure over which symbolic expressions will be plotted. Just use the
ax=
orfig=
keyword argument. -
Added
arrow_3d
tospb.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'sstep
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 thecontrol
module. In particular, theget_data
method now returns many more arrays. -
Breaking: removed attribute
use_quiver_solid_color
fromVector2DSeries
.
-
-
Fixed bug with labels of 2D vector fields.
Sympy Plot Backends v3.0.1
What's Changed
v3.0.1
-
Added new coloring option to
domain_coloring
. Settingcoloring="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 forplot_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
whenphase_units="deg"
andunwrap=True
. -
Added settings for bode plot's
phase_unit
andfreq_unit
to thedefaults
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
What's Changed
-
Introducing the graphics module, which aims to solve the following problems about ordinary plotting functions (whose name's start with
plot_
):- Some functions perform too many tasks, making them difficult and confusing to use.
- The documentation is difficult to maintain because many keywords arguments are repeated on all plotting functions.
- 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
tospb.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 intospb.plot_functions.vectors
. - Deprecated
spb.functions
. Its content is now intospb.plot_functions.functions_2d
andspb.plot_functions.functions_3d
. - Deprecated
spb.control
. Its content is now intospb.plot_functions.control
. - Deprecated
spb.ccomplex.complex
. Its content is now intospb.plot_functions.complex_analysis
. - Deprecated
spb.ccomplex.wegert
. Its content is now intospb.wegert
.
Under the hood, many of these plotting functions now uses the graphics module.
- Deprecated
-
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). Removednp.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
. Settingscatter=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
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 toplot_bode
in order to get a continous phase plot.
Sympy Plot Backends v2.4.2
What's Changed
- Fixed bug with renderers and the
extend
andappend
methods of plot objects.