import numpy as np import holoviews as hv hv.notebook_extension('bokeh') %opts Curve (line_width=1) def fm_modulation(f_carrier=220, f_mod=220, mod_index=1, length=0.1, sampleRate=2000): sampleInc = 1.0/sampleRate x = np.arange(0,length, sampleInc) y = np.sin(2*np.pi*f_carrier*x + mod_index*np.sin(2*np.pi*f_mod*x)) return hv.Curve((x, y), 'Time', 'Amplitude') %%opts Curve [width=600] f_carrier = np.linspace(20, 60, 3) f_mod = np.linspace(20, 100, 5) curve_dict = {(fc, fm): fm_modulation(fc, fm) for fc in f_carrier for fm in f_mod} kdims = [hv.Dimension(('f_carrier', 'Carrier frequency'), default=40), hv.Dimension(('f_mod', 'Modulation frequency'), default=60)] holomap = hv.HoloMap(curve_dict, kdims=kdims) holomap %%opts GridSpace [plot_size=75] Curve [width=100] grid = hv.GridSpace(holomap) grid %%opts Curve [width=500 height=200] hv.NdLayout(grid[20, 20:81]).cols(2) %%opts NdOverlay [width=600 legend_position='right'] holomap.overlay('f_carrier') %%opts Curve [width=200 height=200] holomap.overlay('f_carrier').grid('f_mod') %%opts Curve [width=400] holomap[20, 40] + holomap.select(f_carrier=20, f_mod=40) print(grid) ds = hv.Dataset(grid.table()) ds.data.head() holomap.kdims reindexed = holomap.reindex(['f_mod', 'f_carrier']) reindexed.kdims new_holomap = holomap.add_dimension('New dimension', dim_pos=0, dim_val=1) new_holomap.kdims