def matelem_vs_paramvals( specdata: "SpectrumData", select_elems: Union[int, List[Tuple[int, int]]] = 4, mode: str = "abs", **kwargs ) -> Tuple[Figure, Axes]: """Generates a simple plot of matrix elements as a function of one parameter. The individual points correspond to the a provided array of parameter values. Parameters ---------- specdata: object includes parameter name, values, and matrix elements select_elems: either maximum index of desired matrix elements, or list [(i1, i2), (i3, i4), ...] of index tuples for specific desired matrix elements mode: choice of processing function to be applied to data (default value = 'abs') **kwargs: standard plotting option (see separate documentation) Returns ------- matplotlib objects for further editing """ fig, axes = kwargs.get("fig_ax") or plt.subplots() x = specdata.param_vals modefunction = constants.MODE_FUNC_DICT[mode] if isinstance(select_elems, int): index_pairs = [ (row, col) for row in range(select_elems) for col in range(row + 1) ] else: index_pairs = select_elems for (row, col) in index_pairs: y = modefunction(specdata.matrixelem_table[:, row, col]) axes.plot( x, y, label=str(row) + "," + str(col), **_extract_kwargs_options(kwargs, "plot") ) if _LABELLINES_ENABLED: labelLines(axes.get_lines(), zorder=1.5) else: axes.legend(loc="center left", bbox_to_anchor=(1, 0.5)) _process_options(fig, axes, opts=defaults.matelem_vs_paramvals(specdata), **kwargs) return fig, axes
def matelem_vs_paramvals(specdata, select_elems=4, mode='abs', **kwargs): """Generates a simple plot of matrix elements as a function of one parameter. The individual points correspond to the a provided array of parameter values. Parameters ---------- specdata: SpectrumData object includes parameter name, values, and matrix elements select_elems: int or list either maximum index of desired matrix elements, or list [(i1, i2), (i3, i4), ...] of index tuples for specific desired matrix elements mode: str from `constants.MODE_FUNC_DICT`, optional choice of processing function to be applied to data (default value = 'abs') **kwargs: dict standard plotting option (see separate documentation) Returns ------- tuple(Figure, Axes) matplotlib objects for further editing """ def request_range(sel_elems): return isinstance(sel_elems, int) fig, axes = kwargs.get('fig_ax') or plt.subplots() x = specdata.param_vals modefunction = constants.MODE_FUNC_DICT[mode] if request_range(select_elems): index_pairs = [(row, col) for row in range(select_elems) for col in range(row + 1)] else: index_pairs = select_elems for (row, col) in index_pairs: y = modefunction(specdata.matrixelem_table[:, row, col]) axes.plot(x, y, label=str(row) + ',' + str(col)) if _LABELLINES_ENABLED: labelLines(axes.get_lines(), zorder=1.5) else: axes.legend(loc='center left', bbox_to_anchor=(1, 0.5)) _process_options(fig, axes, opts=defaults.matelem_vs_paramvals(specdata), **kwargs) return fig, axes