Source code for hum.utils.plotting

"""
Plot utils
"""
from inspect import getmodule
import matplotlib.pylab as plt
from numpy import linspace
from hum.utils.date_ticks import str_ticks

DFLT_FIGSIZE_FOR_WF_PLOTS = (22, 5)
DFLT_SR = 44100


[docs]def getmodulename(obj, default=''): """Get name of module of object""" return getattr(getmodule(obj), '__name__', default)
# def plot_wf(wf, sr=None, figsize=(20, 6), **kwargs): # if figsize is not None: # plt.figure(figsize=figsize) # if sr is not None: # plt.plot(linspace(start=0, stop=len(wf) / float(sr), num=len(wf)), wf, **kwargs) # else: # plt.plot(wf, **kwargs) def plot_wf( wf, sr=None, figsize=DFLT_FIGSIZE_FOR_WF_PLOTS, offset_s=0, ax=None, **kwargs ): if figsize is not None: plt.figure(figsize=figsize) _ax = ax or plt if sr is not None: _ax.plot( offset_s + linspace(start=0, stop=len(wf) / float(sr), num=len(wf)), wf, **kwargs ) plt.margins(x=0) else: _ax.plot(wf, **kwargs) plt.margins(x=0) return if _ax == plt: _xticks, _ = plt.xticks() plt.xticks(_xticks, str_ticks(ticks=_xticks, ticks_unit=1)) plt.margins(x=0) else: _xticks = _ax.get_xticks() _ax.set_xticks(_xticks) _ax.set_xticklabels(str_ticks(ticks=_xticks, ticks_unit=1)) plt.margins(x=0) def disp_wf(wf, sr=DFLT_SR, autoplay=False, wf_plot_func=plt.specgram): if wf_plot_func is not None: if getmodulename(wf_plot_func, '').startswith('matplotlib'): plt.figure(figsize=DFLT_FIGSIZE_FOR_WF_PLOTS) wf_plot_func(wf) try: from IPython.display import Audio return Audio(data=wf, rate=sr, autoplay=autoplay) except: pass