def BarlowRangeVarPlotter(rangeVars=['v'], vertical_stack=False, show=True, sections=False, ylims=[None, None], save_PNG=False):
    from neuron import h
    import numpy as np
    from matplotlib import pyplot as plt


    fig, (ax) = plt.subplots(nrows=1, ncols=1, sharex=True, figsize=(10, 9))
    for rangeVar in rangeVars:
        yData_array = np.array([])
        xData_array = np.array([])
        x_prev = 0.0
        if sections==False:
            sections = h.allsec()
        for sec in sections:
        # for sec in [dend, soma, hill, ais:
            yvec = h.Vector()
            xvec = h.Vector()
            h.RangeVarPlot(rangeVar, sec(0), sec(1)).to_vector(yvec, xvec)
            ydata = np.array(yvec)
            xdata = x_prev + np.array(xvec)
            label = rangeVar+' '+sec.name()
            if vertical_stack == True:
                plt.plot(xdata/sec.L, ydata, label=label, linewidth=0, markersize=5, marker='o', alpha=0.6)
            else:
                x_prev = xdata[-1]
                plt.plot(xdata, ydata, label=label, linewidth=1, markersize=5, marker='o', alpha=0.6)
            
            yData_array = np.hstack((yData_array, ydata))
            xData_array = np.hstack((xData_array, xdata))
            # ax.set_ylabel(rangeVar, fontsize=40)
            ax.set_xlabel('position', fontsize=40)

    ax.set_title(r'$\Delta t = $'+str(h.t)+r'[ms]')
    ax.set_ylim(ylims)
    ax.legend()
    if show == True:
        if save_PNG==True:
            from time import time
            import os
            figurename='figure'+str(int(time()))+'.png'
            plt.savefig(figurename, dpi=600)
            os.system("open " + figurename)
            # os.open(figurename)
        else:
            plt.show()

def plot_CLSparams(sections):
    from BBplotting import BarlowRangeVarPlotter
    from mech_settings import mech_name
    params=[]
    params.append('gl'+'_'+mech_name)
    params.append('gnabar'+'_'+mech_name)
    params.append('gnabar2'+'_'+mech_name)
    params.append('gkbar'+'_'+mech_name)
    params.append('INaKmax'+'_'+mech_name)
    params.append('gnal'+'_'+mech_name)
    params.append('gkl'+'_'+mech_name)
    print(params)
    BarlowRangeVarPlotter(params, sections=sections, ylims=[0.0, None], save_PNG=False)