import numpy as np import holoviews as hv from holoviews import dim, opts hv.extension('matplotlib') x,y = np.mgrid[-10:10,-10:10] * 0.25 sine_rings = np.sin(x**2+y**2)*np.pi+np.pi exp_falloff = 1/np.exp((x**2+y**2)/8) vector_data = (x, y, sine_rings, exp_falloff) hv.VectorField(vector_data).opts(magnitude='Magnitude') anglecolor = hv.VectorField(vector_data).opts( opts.VectorField(title='A', magnitude='Magnitude', color='Angle')) magcolor = hv.VectorField(vector_data).opts( opts.VectorField(title='M', magnitude='Magnitude', color='Magnitude')) anglecolor + magcolor hmap = hv.HoloMap({phase: hv.VectorField((x, y,(vector_data[2]+phase)%np.pi*2, vector_data[3]+np.abs(phase))) for phase in np.linspace(-np.pi,np.pi,5)}, kdims='Phase') hmap.opts(opts.VectorField(color='Angle', magnitude=dim('Magnitude').norm()*0.2, rescale_lengths=False)) xs, ys = np.arange(0, 2 * np.pi, .2), np.arange(0, 2 * np.pi, .2) X, Y = np.meshgrid(xs, ys) U = np.cos(X) V = np.sin(Y) # Convert U, V to magnitude and angle mag = np.sqrt(U**2 + V**2) angle = (np.pi/2.) - np.arctan2(U/mag, V/mag) vectors = hv.VectorField((xs, ys, angle, mag)) points = hv.Points((X.flat, Y.flat)) (vectors * points).opts( opts.Points(color='black', s=1), opts.VectorField(aspect=2, color='Magnitude', cmap='fire', fig_size=300, magnitude='Magnitude', pivot='tip', scale=0.8))