Source code for skippylab.plotting
"""
Convenient plot functions
"""
import pylab as p
import seaborn.apionly as sb
from copy import copy
#p.style.use("pyoscidefault")
[docs]def plot_waveform(wf_header, wf_data,\
fig=None,savename=None,\
use_mv_and_ns=True,\
color=None):
"""
Make a plot of a single acquisition
Args:
wf_header (dict): custom waveform header
wf_data (np.ndarray): waveform data
Keyword Args:
fig (pylab.figure): A figure instance
savename (str): where to save the figure (full path)
use_mv_and_ns (bool): use mV and ns instead of V and s
Returns:
pylab.fig
"""
if color is None:
color=sb.color_palette("dark")[0]
if fig is None:
fig = p.figure()
ax = fig.gca()
# if remove_empty_bins:
# bmin = min(bincenters[bincontent > 0])
# bmax = max(bincenters[bincontent > 0])
# bincenters = bincenters[np.logical_and(bincenters >= bmin, bincenters <= bmax)]
# bincontent = bincontent[np.logical_and(bincenters >= bmin, bincenters <= bmax)]
xlabel = wf_header["xunit"]
ylabel = wf_header["yunit"]
xs = copy(wf_header["xs"])
ys = copy(wf_data)
if xlabel == "s" and ylabel == "V" and use_mv_and_ns:
xs *= 1e9
ys *= 1e3
xlabel = "ns"
ylabel = "mV"
ax.plot(xs, ys, color=color)
ax.grid()
sb.despine(fig)
ax.set_xlabel(xlabel)
ax.set_ylabel(ylabel)
p.tight_layout()
if savename is not None:
fig.savefig(savename)
return fig
#####################################################
[docs]def plot_histogram(bincenters,bincontent,\
fig=None,savename="test.png",\
remove_empty_bins=True):
"""
Plot a histogram returned by TektronixDPO4104B.get_histogram
Use pylab.plot
Args:
bincenters (np.ndarray); bincenters (x)
bincontent (np.ndarray): bincontent (y)
Keyword Args:
fig (pylab.figure): A figure instance
savename (str): where to save the figure (full path)
remove_empty_bins (bool): Cut away preceeding and trailing zero bins
"""
if fig is None:
fig = p.figure()
ax = fig.gca()
if remove_empty_bins:
bmin = min(bincenters[bincontent > 0])
bmax = max(bincenters[bincontent > 0])
bincenters = bincenters[np.logical_and(bincenters >= bmin, bincenters <= bmax)]
bincontent = bincontent[np.logical_and(bincenters >= bmin, bincenters <= bmax)]
ax.plot(bincenters,bincontent,color=sb.color_palette("dark")[0])
ax.grid()
sb.despine(fig)
ax.set_xlabel("amplitude")
ax.set_ylabel("log nevents ")
p.tight_layout()
fig.savefig(savename)
return fig