Source code for dlsmicro.plot_time_points

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

[docs]def plot_time_points(df_path, n_points, plot_G_replicates=True, plot_MSD_replicates=True, plot_scattering=False, add_scaling=False, scaling_frac=None): """ Plot DLS microrheology output data for time-dependent measurements after analysis and saving as dataframe. Parameters ---------- df_path : str Path to saved dataframe to plot n_points : int Corresponds to the number of measurements taken over duration of experiment plot_G_replicates : boolean, `optional` If `True`, plot shear modulus for all time points plot_MSD_replicates : boolean, `optional` If `True`, plot mean-squared displacement for all time points plot_scattering : boolean, `optional` If `True`, plot scattering for all time points 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 """ # Plot style options rc('axes', labelsize=20.) rc('xtick', labelsize=16.) rc('ytick', labelsize=16.) rc('lines', markersize=10) rc('lines', linewidth=1) # Row numbers for correlation time points (time_points) time_points = range(1, n_points, 1) # if cuvette == 'disposable': # time_points = range(1, 12, 1) # elif cuvette == 'quartz': # time_points = range(1, 18, 1) # else: # raise Exception('cuvette type entered is not valid') cmap = plt.cm.get_cmap('viridis',len(time_points)) colors = [cmap(i) for i in range(len(time_points))] df = pd.read_pickle(df_path) if plot_MSD_replicates: for i, tp in enumerate(time_points): dfi = df[df['time_point'] == tp] time = dfi['t'] msd = dfi['msd_smooth'] plt.plot(time*1.e6, msd, color=colors[i], ls='-') plt.legend(time_points, frameon=False) plt.xscale('log') plt.yscale('log') plt.xlabel('$\\mathregular{\\tau\ (s)}$') plt.ylabel('$\\mathregular{MSD\ (nm^2)}$') plt.tight_layout() plt.show() if plot_G_replicates: for i, tp in enumerate(time_points): dfi = df[df['time_point'] == tp] freq = dfi['omega'] G1 = dfi['G1'] G2 = dfi['G2'] plt.plot(freq, G1, color=colors[i], ls='-') plt.plot(freq, G2, color=colors[i], ls='--') if add_scaling: plot_tools.add_w_scaling(df[df['time_point'] == time_points[0]]['omega'][0:50], scaling_frac, df[df['time_point'] == time_points[0]]['G2'][2], [2./6.,3./6.]) plt.legend(time_points, frameon=False) plt.xscale('log') plt.yscale('log') plt.xlabel('$\\mathregular{\\omega\ (s^{-1})}$') plt.ylabel('$\\mathregular{G^*\ (Pa)}$') plt.tight_layout() plt.show() if plot_scattering: dfi = df[df['time_point'] == time_points[0]] epos = dfi['epos'].values scattering = dfi['scattering'].values plot_over = np.argwhere(epos) plt.plot(epos[plot_over],scattering[plot_over],linestyle='None',marker='.') plt.ylabel('Scattering Intensity') plt.xlabel('Position') plt.yscale('log') plt.tight_layout() plt.show()