The Axes method ax.imshow displays an image on the axes. In its basic usage, it takes a two-dimensional array and maps its values to the pixels on an image according to some interpolation scheme and normalization. In this case, im is a three-dimensional array of shape (n, m, 3) in which the “depth” coordinate corresponds to the red, green and blue components of each pixel in the n-by-m image.
import numpy as np import matplotlib.pyplot as plt import matplotlib.cm as cm f1 = lambda x, y: (0., 0.16*y) f2 = lambda x, y: (0.85*x + 0.04*y, -0.04*x + 0.85*y + 1.6) f3 = lambda x, y: (0.2*x - 0.26*y, 0.23*x + 0.22*y + 1.6) f4 = lambda x, y: (-0.15*x + 0.28*y, 0.26*x + 0.24*y + 0.44) fs = [f1, f2, f3, f4] npts = 50000 # Canvas size (pixels). width, height = 300, 300 aimg = np.zeros((width, height)) x, y = 0, 0 for i in range(npts): # Pick a random transformation and apply it. f = np.random.choice(fs, p=[0.01, 0.85, 0.07, 0.07]) x, y = f(x, y) # Map (x, y) to pixel coordinates. # NB we "know" that -2.2 < x < 2.7 and 0 <= y < 10. ix, iy = int(width / 2 + x * width / 10), int(y * height / 12) # Set this point of the array to 1 to mark a point in the fern. aimg[iy, ix] = 1 plt.imshow(aimg[::-1,:], cmap=cm.Greens) plt.savefig('ex422.png', dpi=100) plt.show()
Recent Comments