import pandas as pd import holoviews as hv spike_train = pd.read_csv('../assets/spike_train.csv.gz') spike_train.head(n=3) curve = hv.Curve(spike_train, 'milliseconds', 'Hertz', group='Firing Rate') spikes = hv.Spikes(spike_train.sample(300), kdims='milliseconds', vdims=[], group='Spike Train') curve + spikes hv.extension('bokeh', 'matplotlib') curve + spikes %%output size=150 %%opts Curve [height=100 width=600 xaxis=None tools=['hover']] %%opts Curve (color='red' line_width=1.5) %%opts Spikes [height=100 width=600 yaxis=None] (color='grey' line_width=0.25) curve = hv.Curve( spike_train, 'milliseconds', 'Hertz') spikes = hv.Spikes(spike_train, 'milliseconds', []) (curve + spikes).cols(1) curve_opts = dict(height=100, width=600, xaxis=None, tools=['hover'], color='red', line_width=1.5) spike_opts = dict(height=100, width=600, yaxis=None, color='grey', line_width=0.25) curve = hv.Curve(spike_train, 'milliseconds', 'Hertz') spikes = hv.Spikes(spike_train, 'milliseconds', []) (curve.options(**curve_opts) + spikes.options(**spike_opts)).cols(1) layout = (curve + spikes).options({'Curve': curve_opts, 'Spikes': spike_opts}).cols(1) %%output size=200 backend='matplotlib' fig='svg' %%opts Layout [sublabel_format='' vspace=0.1] %%opts Spikes [aspect=6 yaxis='bare'] (color='red' linewidth=0.25 ) %%opts Curve [aspect=6 xaxis=None show_grid=False] (color='blue' linewidth=2 linestyle='dashed') (hv.Curve(spike_train, 'milliseconds', 'Hertz') + hv.Spikes(spike_train, 'milliseconds', vdims=[])).cols(1) %output size=150 spikes.select(milliseconds=(2000,4000)) spikes= spikes.redim.label(milliseconds='Time in milliseconds (10⁻³ seconds)') curve = curve.redim.label(Hertz='Frequency (Hz)') (curve + spikes).select(milliseconds=(2000,4000)).cols(1)