# pip install ipycanvas import numpy as np from ipycanvas import Canvas, hold_canvas n = 2000 canvas_size = 600 t1 = np.arange(1, n + 1) t0 = np.arange(0, 102 * n, 102) t0 = np.remainder(t0, n) XY_start = ( ( np.vstack((np.cos((t1 - 1) * 2 * np.pi / n), np.sin((t1 - 1) * 2 * np.pi / n))) + 1 ) * canvas_size / 2.0 ) XY_end = ( ( np.vstack((np.cos((t0 - 1) * 2 * np.pi / n), np.sin((t0 - 1) * 2 * np.pi / n))) + 1 ) * canvas_size / 2.0 ) canvas = Canvas(width=canvas_size, height=canvas_size) canvas.fill_style = "white" canvas.fill_rect(0, 0, canvas_size, canvas_size) with hold_canvas(canvas): canvas.line_width = 0.5 for i in np.arange(n): canvas.stroke_line(XY_start[0, i], XY_start[1, i], XY_end[1, i], XY_end[0, i]) canvas.stroke_circle(canvas_size / 2.0, canvas_size / 2.0, canvas_size / 2.0) canvas