Created
September 6, 2020 10:02
-
-
Save IlievskiV/7932c3830a857b39ea81964f5094dc9c to your computer and use it in GitHub Desktop.
How to animate the convergence of the Mandelbrot set in one interesting lattice of the complex plane
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import numpy as np | |
| import matplotlib.pyplot as plt | |
| import matplotlib.animation as animation | |
| 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 = 250 # how many pixles 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=(10, 10)) # 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) | |
| anim.save('mandelbrot.gif',writer='imagemagick') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment