Add files via upload
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user