Source code for bioplottemplates.plots.param

"""Plot a single parameter."""
import itertools
import numpy as np

from matplotlib import pyplot as plt

from bioplottemplates import log
from bioplottemplates.libs import libmsg, libutil
from bioplottemplates.logger import S, T


[docs]def plot( x_data, y_data, *, labels="No label provided", title=None, xlabel=None, ylabel=None, colors=('b', 'g', 'r', 'c', 'm', 'y', 'k'), alpha=0.7, xmax=None, xmin=None, ymax=None, ymin=None, grid=True, grid_color="lightgrey", grid_ls="-", grid_lw=1, grid_alpha=0.5, legend=True, legend_fs=6, legend_loc=4, vert_lines=None, figsize=(8, 6), filename='plot_param.pdf', **kwargs ): """ Plot a single plot with the combined RMSD. Bellow parameters concern data representation and are considered of highest importance because their incorrect use can mislead data analysis and consequent conclusions. Plot style parameters concernning only plot style, i.e., colors, shapes, fonts, etc... and which do not distort the actual data, are not listed in the paremeter list bellow. We hope these parameter names are self-explanatory and are listed in the function definition. Parameters ---------- x_data : interable of numbers Container of the X axis data. Should be accepted by matplotlib. y_data : np.ndarray, shape=(M,) Container of the Y axis data. Where M is the RMSDs data for the combined chains. labels : str, optional The label to represent in plot legend. If a list of series is provided, a list of labels can be provided as well. Defauts to: "no labels provided". filename : str, optional The file name with which the plot figure will be saved in disk. Defaults to rmsd_individual_chains_one_subplot.pdf. You can change the file type by specifying its extention in the file name. fig_size : tuple of float or int The size ratio of the subplot in the figure. """ log.info(T("Plotting parameter:")) # prepares data in y_data = np.array(y_data) if y_data.ndim == 1: y_data = y_data[np.newaxis, :] plot_labels = libutil.make_list(labels) plot_colors = libutil.make_list(colors) plot_colors = itertools.cycle(plot_colors) assert y_data.shape[0] == len(plot_labels), ( '{} vs {}'.format(y_data.shape[0], len(plot_labels))) # done data preparation fig, ax = plt.subplots(nrows=1, ncols=1, figsize=figsize) plt.tight_layout(rect=[0.05, 0.02, 0.995, 0.985]) fig.suptitle( title, x=0.5, y=0.990, va="top", ha="center", ) for yy, ll in zip(y_data, plot_labels): ax.plot( x_data, yy, label=ll, color=next(plot_colors), alpha=alpha, ) ax.set_xlabel(xlabel, weight='bold') ax.set_ylabel(ylabel, weight='bold') # setting axes scales xmin = xmin or x_data[0] xmax = xmax or x_data[-1] ymin = ymin or np.array(y_data).min() ymax = ymax or np.array(y_data).max() ax.set_xlim(xmin, xmax) ax.set_ylim(ymin, ymax) if grid: ax.grid( color=grid_color, linestyle=grid_ls, linewidth=grid_lw, alpha=grid_alpha, ) if isinstance(vert_lines, (list, tuple)): for line in vert_lines: ax.axvline(x=float(line), color='k') if legend: ax.legend( fontsize=legend_fs, loc=legend_loc, ) fig.savefig(filename) log.info(S(libmsg.fig_saved.format(filename))) plt.close("all") return