commit ff59cd9823ab509fcca6967d8c4214c486213319 Author: Imants Pulkstenis Date: Fri Aug 16 13:55:00 2019 +0300 Add files via upload diff --git a/draw.py b/draw.py new file mode 100644 index 0000000..ea50269 --- /dev/null +++ b/draw.py @@ -0,0 +1,114 @@ +import matplotlib +import matplotlib.pyplot as plt +from matplotlib.colors import BoundaryNorm +from matplotlib.ticker import MaxNLocator +import numpy as np + + +# magins +min_val = 0.2 +max_val = 0.6 + +max_cycles = 500 +details = 500 + +# make these smaller to increase the resolution +delta = max_val - min_val +# dx, dy = 0.005, 0.005 +dx, dy = delta/details, delta/details + +# generate 2 2d grids for the x & y bounds +y, x = np.mgrid[slice(min_val, max_val + dy, dy), + slice(min_val, max_val + dx, dx)] +y *= -1 +# x = np.arange(0, 5, 0.5) +# print("Printing x values:") +# print(x) +# print(len(x)) +# print("Printing y values:") +# print(y) +# print(len(x)) + +# Function +# z = np.sin(y) * np.sin(x) +z = x+y + +# for n in range(len(x)): +# for k in range(len(y)): +# for a in range(max_cycles): +# temp = +# z[[k],[n]] = a +# # print(k*n) + +n = 0 +k = 0 +a = 0 +Zr= 0 +Zi= 0 +while n < len(x): + while k < len(y): + # print(k) + while a < max_cycles: + tempZr = Zr**2 - Zi**2 + tempZi = 2 * Zr * Zi + temp = tempZr**2 + tempZi**2 + if temp >= 4: + break + z[[k],[n]] = a + a += 1 + Zr = tempZr + x[[k],[n]] + Zi = tempZi + y[[k],[n]] + k += 1 + a = 0 + Zr= 0 + Zi= 0 + n += 1 + k = 0 + +# print("Printing z values:") +# print(z) +# z[[k],[n]] = 0 +# print(z) +# print(len(z)) + +# x and y are bounds, so z should be the value *inside* those bounds. +# Therefore, remove the last value from the z array. +z = z[:-1, :-1] +levels = MaxNLocator(nbins=15).tick_values(z.min(), z.max()) +# print(len(z)) +# print(z) +# print(z.min() , z.max()) +# print(levels) + +# pick the desired colormap, sensible levels, and define a normalization +# instance which takes data values and translates those into levels. + +fig, ax = plt.subplots() + +cmap = plt.get_cmap('PiYG') +norm = BoundaryNorm(levels, ncolors=cmap.N, clip=True) +# print(cmap) +# print(norm) + +# im = ax.pcolor(x, y, z, cmap=cmap, norm=norm) + +# contours are *point* based plots, so convert our bound into point +# centers + +im = ax.contourf(x[:-1, :-1] + dx/2., + y[:-1, :-1] + dy/2., z, cmap=cmap, levels=levels) + +fig.colorbar(im, ax=ax) + +#fig = plt.figure() # an empty figure with no axes +#fig.suptitle('Title of Figure') # Add a title so we know which it is + +plt.xlabel('real') +plt.ylabel('imaginary') + +plt.title("Manderbrot set") + +# plt.legend() + +plt.show() +