import numpy as np
import matplotlib.pyplot as plt

# Setting parameters (these values can be changed)
x_domain, y_domain = np.linspace(-2, 2, 500), np.linspace(-2, 2, 500)
bound = 2
max_iterations = 50  # any positive integer value
colormap = "nipy_spectral"  # set to any matplotlib valid colormap

func = lambda z, p, c: z**p + c

# Computing 2D array to represent the Mandelbrot set
iteration_array = []
for y in y_domain:
    row = []
    for x in x_domain:
        z = 0
        p = 2
        c = complex(x, y)
        for iteration_number in range(max_iterations):
            if abs(z) >= bound:
                row.append(iteration_number)
                break
            else:
                try:
                    z = func(z, p, c)
                except (ValueError, ZeroDivisionError):
                    z = c
        else:
            row.append(0)

    iteration_array.append(row)

# Plotting the data
ax = plt.axes()
ax.set_aspect("equal")
graph = ax.pcolormesh(x_domain, y_domain, iteration_array, cmap=colormap)
plt.colorbar(graph)
plt.xlabel("Real-Axis")
plt.ylabel("Imaginary-Axis")
plt.show()