Search code examples
pythonmatplotliblinspace

When plotting a np.linspace the figure labeling is not what I wanted


I want to animate julia sets. Anyways everything works so far,

I only need to change the axis labeling. When plotting my values the

x- and y axis are both showing the 500x500 linspace. Id rather like to see

the [-1,1]x[-1,1] Intervall ive defined the linspace on. How could I change that?

thank you :)

code:



import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

# Parameters and Test-Function
f = lambda z: z ** 2 - 0.1+0.651*1j
N = 1000
R = 2


def pre_greyscale(f, c, N, R):
    if np.abs(c) > R:
        return 0
    else:
        for i in range(0, N):
            c = f(c)
            if np.abs(c) > R:
                return i + 1
        return N


# fig1 = plt.figure()
real = np.linspace(-1, 1, num=500)
imaginary = np.linspace(-1, 1, num=500)
pre_image = np.empty(shape=(real.size, imaginary.size))

for k, r in enumerate(real):
    for p, i in enumerate(imaginary):
        pre_image[p, k] = pre_greyscale(f, r + i * 1j, N, R)


def animate(m):
    image = np.empty(shape=(real.size, imaginary.size))
    for k in range(0, 500):
        for p in range(0, 500):
            if pre_image[p, k] <= m:
                image[p, k] = 1 - pre_image[p, k] / m
            # else:
            #     image[k, p] = 0

    # mat = plt.imshow(image, cmap='gray')
    # plt.show()
    return image


imagelist = [animate(x) for x in range(N)]
fig = plt.figure()  # make figure

# Initialize imshow
im = plt.imshow(imagelist[0], cmap=plt.get_cmap('gray'), vmin=0, vmax=1)


# function to update figure
def updatefig(j):
    # set the data in the axesimage object
    im.set_array(imagelist[j])
    # return the artists set
    return [im]


# kick off the animation
ani = FuncAnimation(fig, updatefig, frames=N,
                    interval=20, blit=True)


ani.save('fractal2.gif', writer='pillow')


Solution

  • Adding the extent parameter to plt.imshow will set the correct labels:

    # Initialize imshow
    im = plt.imshow(imagelist[0], cmap=plt.get_cmap('gray'), vmin=0, vmax=1, extent=[-1,1,-1,1])
    

    fractal