Package plot_widgets¶
Package providing widgets for plotting various time and frequency dependent filter properties
plot_tab_widgets¶
Create a tabbed widget for all plot subwidgets in the list fb.plot_widgets_list
.
This list is compiled at startup in pyfda.tree_builder.Tree_Builder
, it is
kept as a module variable in pyfda.filterbroker
.
-
class
pyfda.plot_widgets.plot_tab_widgets.
PlotTabWidgets
(parent)[source]¶ -
eventFilter
(source, event)[source]¶ Filter all events generated by the QTabWidget. Source and type of all events generated by monitored objects are passed to this eventFilter, evaluated and passed on to the next hierarchy level.
This filter stops and restarts a one-shot timer for every resize event. When the timer generates a timeout after 500 ms,
current_tab_redraw()
is called by the timer.
-
plot_hf¶
The Plot_Hf
class constructs the widget to plot the magnitude
frequency response |H(f)| of the filter either in linear or logarithmic
scale. Optionally, the magnitude specifications and the phase
can be overlayed.
-
class
pyfda.plot_widgets.plot_hf.
Plot_Hf
(parent)[source]¶ Widget for plotting |H(f)|, frequency specs and the phase
-
align_y_axes
(ax1, ax2)[source]¶ Sets tick marks of twinx axes to line up with total number of ax1 tick marks
-
plot_spec_limits
(ax)[source]¶ Plot the specifications limits (F_SB, A_SB, …) as hatched areas with borders.
-
-
pyfda.plot_widgets.plot_hf.
classes
= {'Plot_Hf': '|H(f)|'}¶ display name
Type: Dict containing class name
plot_phi¶
Widget for plotting phase frequency response phi(f)
-
class
pyfda.plot_widgets.plot_phi.
Plot_Phi
(parent)[source]¶ -
-
process_sig_rx
(dict_sig=None)[source]¶ Process signals coming from the navigation toolbar and from sig_rx
-
-
pyfda.plot_widgets.plot_phi.
classes
= {'Plot_Phi': 'φ(f)'}¶ display name
Type: Dict containing class name
plot_tau_g¶
Widget for plotting the group delay
-
class
pyfda.plot_widgets.plot_tau_g.
Plot_tau_g
(parent)[source]¶ Widget for plotting the group delay
-
init_axes
()[source]¶ Initialize the axes and set some stuff that is not cleared by ax.clear() later on.
-
-
pyfda.plot_widgets.plot_tau_g.
classes
= {'Plot_tau_g': 'tau_g'}¶ display name
Type: Dict containing class name
plot_pz¶
Widget for plotting poles and zeros
-
class
pyfda.plot_widgets.plot_pz.
Plot_PZ
(parent)[source]¶ -
-
process_sig_rx
(dict_sig=None)[source]¶ Process signals coming from the navigation toolbar and from sig_rx
-
update_view
()[source]¶ Draw the figure with new limits, scale etcs without recalculating H(f) – not yet implemented, just use draw() for the moment
-
zplane
(b=None, a=1, z=None, p=None, k=1, pn_eps=0.001, analog=False, plt_ax=None, plt_poles=True, style='square', anaCircleRad=0, lw=2, mps=10, mzs=10, mpc='r', mzc='b', plabel='', zlabel='')[source]¶ Plot the poles and zeros in the complex z-plane either from the coefficients (b,`a) of a discrete transfer function `H`(`z) (zpk = False) or directly from the zeros and poles (z,p) (zpk = True).
When only b is given, an FIR filter with all poles at the origin is assumed.
Parameters: - b (array_like) – Numerator coefficients (transversal part of filter) When b is not None, poles and zeros are determined from the coefficients b and a
- a (array_like (optional, default = 1 for FIR-filter)) – Denominator coefficients (recursive part of filter)
- z (array_like, default = None) – Zeros When b is None, poles and zeros are taken directly from z and p
- p (array_like, default = None) – Poles
- analog (boolean (default: False)) – When True, create a P/Z plot suitable for the s-plane, i.e. suppress the unit circle (unless anaCircleRad > 0) and scale the plot for a good display of all poles and zeros.
- pn_eps (float (default : 1e-2)) – Tolerance for separating close poles or zeros
- plt_ax (handle to axes for plotting (default: None)) – When no axes is specified, the current axes is determined via plt.gca()
- plt_poles (Boolean (default : True)) – Plot poles. This can be used to suppress poles for FIR systems where all poles are at the origin.
- style (string (default: 'square')) – Style of the plot, for style == ‘square’ make scale of x- and y- axis equal.
- mps (integer (default: 10)) – Size for pole marker
- mzs (integer (default: 10)) – Size for zero marker
- mpc (char (default: 'r')) – Pole marker colour
- mzc (char (default: 'b')) – Zero marker colour
- lw (integer (default: 2)) – Linewidth for unit circle
- zlabel (plabel,) – This string is passed to the plot command for poles and zeros and can be displayed by legend()
Returns: z, p, k
Return type: ndarray
Notes
-
-
pyfda.plot_widgets.plot_pz.
classes
= {'Plot_PZ': 'P / Z'}¶ display name
Type: Dict containing class name
plot_impz¶
Widget for plotting impulse and general transient responses
-
class
pyfda.plot_widgets.plot_impz.
Plot_Impz
(parent)[source]¶ Construct a widget for plotting impulse and general transient responses
-
calc_auto
(autorun=None)[source]¶ Triggered when checkbox “Autorun” is clicked. Enable or disable the “Run” button depending on the setting of the checkbox. When checkbox is checked (autorun == True passed via signal- slot connection), automatically run impz().
-
calc_fft
()[source]¶ (Re-)calculate FFTs of stimulus self.X, quantized stimulus self.X_q and response self.Y using the window function self.ui.win.
-
calc_response
()[source]¶ (Re-)calculate ideal filter response self.y from stimulus self.x and the filter coefficients using lfilter(), sosfilt() or filtfilt().
Set the flag self.cmplx when response self.y or stimulus self.x are complex and make warning field visible.
-
draw
(arg=None)[source]¶ (Re-)draw the figure without recalculation. When triggered by a signal- slot connection from a button, combobox etc., arg is a boolean or an integer representing the state of the widget. In this case, needs_redraw is set to True.
-
draw_data
(plt_style, ax, x, y, bottom=0, label='', plt_fmt=None, mkr=False, mkr_fmt=None, **args)[source]¶ Plot x, y data (numpy arrays with equal length) in a plot style defined by plt_style.
Parameters: - plt_style (str) – one of “line”, “stem”, “step”, “dots”
- ax (matplotlib axis) – Handle to the axis where signal is
- x (array-like) – x-axis: time or frequency data
- y (array-like) – y-data
- bottom (float) – Bottom line for stem plot. The default is 0.
- label (str) – Plot label
- plt_fmt (dict) – General styles (color, linewidth etc.) for plotting. The default is None.
- mkr (bool) – Plot a marker for every data point if enabled
- mkr_fmt (dict) – Marker styles
- args (dictionary with additional keys and values. As they might not be) – compatible with every plot style, they have to be added individually
Returns: Return type:
-
fx_select
(fx=None)[source]¶ Select between fixpoint and floating point simulation. Parameter fx can be:
- str “Fixpoint” or “Float” when called directly
- int 0 or 1 when triggered by changing the index of combobox self.ui.cmb_sim_select (signal-slot-connection)
In both cases, the index of the combobox is updated according to the passed argument. If the index has been changed since last time, self.needs_calc is set to True and the run button is set to “changed”.
When fixpoint simulation is selected, all corresponding widgets are made visible. self.fx_sim is set to True.
If self.fx_sim has changed, self.needs_calc is set to True.
-
impz
(arg=None)[source]¶ - Triggered by:
- construct_UI() [Initialization]
- Pressing “Run” button, passing button state as a boolean
- Activating “Autorun” via self.calc_auto()
- ‘fx_sim’ : ‘specs_changed’
Calculate response and redraw it.
Stimulus and response are only calculated if self.needs_calc == True.
-
-
pyfda.plot_widgets.plot_impz.
classes
= {'Plot_Impz': 'y[n]'}¶ display name
Type: Dict containing class name
plot_3d¶
Widget for plotting |H(z)| in 3D
-
class
pyfda.plot_widgets.plot_3d.
Plot_3D
(parent)[source]¶ Class for various 3D-plots: - lin / log line plot of H(f) - lin / log surf plot of H(z) - optional display of poles / zeros
-
init_axes
()[source]¶ Initialize and clear the axes to get rid of colorbar The azimuth / elevation / distance settings of the camera are restored after clearing the axes. See http://stackoverflow.com/questions/4575588/matplotlib-3d-plot-with-pyqt4-in-qtabwidget-mplwidget
-
-
pyfda.plot_widgets.plot_3d.
classes
= {'Plot_3D': '3D'}¶ display name
Type: Dict containing class name