import numpy as np import holoviews as hv hv.extension('bokeh') xs = [0.1* i for i in range(100)] curve = hv.Curve((xs, [np.sin(x) for x in xs])) scatter = hv.Scatter((xs[::5], np.linspace(0,1,20))) curve + scatter curve_list = [hv.Curve((xs, [np.sin(f*x) for x in xs])) for f in [0.5, 0.75]] scatter_list = [hv.Scatter((xs[::5], f*np.linspace(0,1,20))) for f in [-0.5, 0.5]] layout = hv.Layout(curve_list + scatter_list).cols(2) layout print(layout) layout2 = layout.Curve.I + layout.Scatter.II layout2 layout2.Scatter.I xs = [0.1* i for i in range(100)] low_freq = hv.Curve((xs, [np.sin(x) for x in xs]), group='Sinusoid', label='Low Frequency') linpoints = hv.Scatter((xs[::5], np.linspace(0,1,20)), group='Linear Points', label='Demo') labelled = low_freq + linpoints labelled labelled.Linear_Points.Demo + labelled.Sinusoid.Low_Frequency curve * scatter curve_list = [hv.Curve((xs, [np.sin(f*x) for x in xs])) for f in [0.5, 0.75]] scatter_list = [hv.Scatter((xs[::5], f*np.linspace(0,1,20))) for f in [-0.5, 0.5]] overlay = hv.Overlay(curve_list + scatter_list) overlay print(overlay) overlay.Curve.I * overlay.Scatter.II high_freq = hv.Curve((xs, [np.sin(2*x) for x in xs]), group='Sinusoid', label='High Frequency') labelled = low_freq * high_freq * linpoints labelled labelled.Linear_Points.Demo * labelled.Sinusoid.High_Frequency * labelled.Sinusoid.Low_Frequency overlay + labelled + labelled.Sinusoid.Low_Frequency