Source code for dlsmicro.plot_replicates

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from dlsmicro.backend import plot_tools
from matplotlib import rc
import matplotlib as mpl

[docs]def plot_replicates(df_path, replicates, replic_color=None, plot_ci=True, plot_G_replicates=True, plot_alpha_replicates=True, plot_scattering=False, add_scaling=False, scaling_frac=None): """ Plot DLS microrheology output data for multiple replicates after analysis and saving as dataframe. Parameters ---------- df_path : str Path to saved dataframe to plot replicates : list of ints List of ints corresponding to the replicate number replic_color : dictionary, `optional` Dictionary of replicates and respective color If `None`, colors are default colors. This applies to the scattering plot. Otherwise, color plotted for G and alpha is first color in dictionary plot_ci : boolean, `optional` If `True`, plot error bars around G and alpha plot_G_replicates : boolean, `optional` If `True`, plot G for all conditions averaged over all replicates plot_alpha_replicates : boolean, `optional` If `True`, plot alpha for all conditions averaged over all replicates plot_scattering : boolean, `optional` If `True`, plot scattering for all conditions add_scaling : boolean, `optional` If `True`, add scaling defined by `scaling_frac` to plot scaling_frac : list of float, `optional` List of 2 floats, where the first number is numerator of fraction and second is denominator of fraction """ df = pd.read_pickle(df_path) # set colors and labels in dictionaries if replic_color == None: cmap = plt.cm.get_cmap('hot',len(replicates)*2) colors = [cmap(i) for i in range(len(replicates))] replic_color = dict(zip(replicates, colors)) if plot_G_replicates: # Plot style options rc('axes', labelsize=24.) rc('xtick', labelsize=18.) rc('ytick', labelsize=18.) rc('lines', markersize=10) rc('lines', linewidth=3) fig, ax1 = plt.subplots(1, 1) plot_tools.plot_replicates_from_df(df, 'G1', plot_ci=plot_ci, color=replic_color[replicates[0]]) plot_tools.plot_replicates_from_df(df, 'G2', plot_ci=plot_ci, color=replic_color[replicates[0]], ls='--') if add_scaling: plot_tools.add_w_scaling(df[df['replicate'] == replicates[0]]['omega'][0:50], scaling_frac, df[df['replicate'] == replicates[0]]['G2'][2], [2./6.,3./6.]) handles = [None] * (2) handles[0] = plt.Line2D((0, 1), (0, 0), color=replic_color[replicates[0]], dashes='', label='$\mathregular{G^{\prime}}$') handles[1] = plt.Line2D((0, 1), (0, 0), color=replic_color[replicates[0]], ls='--', label='$\mathregular{G^{\prime \prime}}$') plt.legend(handles=handles, frameon=False, fontsize=16) plt.ylabel('$\\mathregular{G^*\ (Pa)}$') plt.xlabel('$\\mathregular{\\omega\ (s^{-1})}$') plt.xscale('log') plt.yscale('log') # Force plot to show ticks at every decade and minor ticks minor_tick_marks = [0.1*x for x in range(1, 10)] locmax = mpl.ticker.LogLocator(base=10, numticks=12) locmin = mpl.ticker.LogLocator(base=10, numticks=12, subs=minor_tick_marks) ax1.xaxis.set_major_locator(locmax) ax1.xaxis.set_minor_locator(locmin) ax1.xaxis.set_minor_formatter(mpl.ticker.NullFormatter()) plt.tight_layout() plt.show() if plot_alpha_replicates: # Plot style options rc('axes', labelsize=24.) rc('xtick', labelsize=18.) rc('ytick', labelsize=18.) rc('lines', markersize=10) rc('lines', linewidth=3) fig, ax1 = plt.subplots(1, 1) plot_tools.plot_replicates_from_df(df, 'alpha', plot_ci=plot_ci, color=replic_color[replicates[0]]) plt.ylabel('$\\mathregular{\\alpha}$') plt.xlabel('$\\mathregular{\\omega\ (s^{-1})}$') plt.xscale('log') plt.tight_layout() plt.show() if plot_scattering: # Plot style options rc('axes', labelsize=18.) rc('xtick', labelsize=14.) rc('ytick', labelsize=14.) rc('lines', markersize=10) rc('lines', linewidth=3) fig, ax1 = plt.subplots(1, 1) for replicate in replicates: epos = df[df['replicate'] == replicate]['epos'].values scattering = df[df['replicate'] == replicate]['scattering'].values plot_over = np.argwhere(epos) plt.plot(epos[plot_over],scattering[plot_over], color=replic_color[replicate],linestyle='None',marker='.') # Define line objects for legend so that line color is black rather than # inheriting the color of one of the conditions handles = [None] * len(replicates) for replicate in range(len(replicates)): handles[replicate] = plt.Line2D((0, 1), (0, 0), color=replic_color[replicates[replicate]], ls='None', marker='o', label=replicates[replicate]) plt.legend(handles=handles, frameon=False, fontsize=10, handlelength=2.0) plt.ylabel('Scattering Intensity') plt.xlabel('Position') plt.yscale('log') plt.tight_layout() plt.show()