import numpy as np import matplotlib.pyplot as plt from matplotlib import animation from mandelbrot import mandelbrot def animategif(): x_start, y_start = -2, -1.5 # an interesting region starts here width, height = 3, 3 # for 3 units up and right density_per_unit = 100 # how many pixels per unit # real and imaginary axis re = np.linspace(x_start, x_start + width, width * density_per_unit) im = np.linspace(y_start, y_start + height, height * density_per_unit) fig = plt.figure(figsize=(5, 5)) # instantiate a figure to draw ax = plt.axes() # create an axes object def animate(i): ax.clear() # clear axes object ax.set_xticks([], []) # clear x-axis ticks ax.set_yticks([], []) # clear y-axis ticks X = np.empty((len(re), len(im))) # re-initialize the array-like image threshold = round(1.15 ** (i + 1)) # calculate the current threshold # iterations for the current threshold for i in range(len(re)): for j in range(len(im)): X[i, j] = mandelbrot(re[i], im[j], threshold) # associate colors to the iterations with an iterpolation img = ax.imshow(X.T, interpolation="bicubic", cmap='magma') return [img] anim = animation.FuncAnimation(fig, animate, frames=45, interval=120, blit=True) return anim