import numpy as np import holoviews as hv hv.extension('bokeh') np.random.seed(10) def sine_curve(phase, freq, amp, power, samples=102): xvals = [0.1* i for i in range(samples)] return [(x, amp*np.sin(phase+freq*x)**power) for x in xvals] phases = [0, np.pi/2, np.pi, 3*np.pi/2] powers = [1,2,3] amplitudes = [0.5,0.75, 1.0] frequencies = [0.5, 0.75, 1.0, 1.25, 1.5, 1.75] gridspace = hv.GridSpace(kdims=['Amplitude', 'Power'], group='Parameters', label='Sines') for power in powers: for amplitude in amplitudes: holomap = hv.HoloMap(kdims='Frequency') for frequency in frequencies: sines = {phase : hv.Curve(sine_curve(phase, frequency, amplitude, power)) for phase in phases} ndoverlay = hv.NdOverlay(sines, kdims='Phase').relabel(group='Phases', label='Sines', depth=1) overlay = ndoverlay * hv.Points([(i,0) for i in range(0,10)], group='Markers', label='Dots') holomap[frequency] = overlay gridspace[amplitude, power] = holomap penguins = hv.RGB.load_image('../reference/elements/assets/penguins.png').relabel(group="Family", label="Penguin") layout = gridspace + penguins.opts(axiswise=True) layout print(layout) layout.Parameters.Sines layout.Parameters.Sines[0.5, 1] layout.Parameters.Sines[0.5, 1][1.0] (layout.Parameters.Sines[0.5, 1][1].Phases.Sines + layout.Parameters.Sines[0.5, 1][1].Markers.Dots) l=layout.Parameters.Sines[0.5, 1][1].Phases.Sines[0.0] l print(l) type(layout.Parameters.Sines[0.5, 1][1].Phases.Sines[0.0].data) layout.Parameters.Sines[0.5, 1][1].Phases.Sines[0.0][5.2] layout.Parameters.Sines[0.5, 1][1].Phases.Sines[0.0][5.23], layout.Parameters.Sines[0.5, 1][1].Phases.Sines[0.0][5.27] o1 = layout.Parameters.Sines.select(Amplitude=0.5, Power=1.0).select(Frequency=1.0) o2 = layout.Parameters.Sines.select(Amplitude=0.5, Power=1.0, Frequency=1.0) o1 + o2 layout.Parameters.Sines.select(Amplitude=0.5,Power=1.0, Frequency=1.0, Phase=0.0).Phases.Sines