I'm trying to make a 100x100 image with each pixel being a different random colour, like this example:

I've tried to use matplotlib but I'm not having much luck. Should I maybe be using PIL?
If you want to create an image file (and display it elsewhere, with or without Matplotlib), you could use NumPy and Pillow as follows:
import numpy
from PIL import Image
imarray = numpy.random.rand(100,100,3) * 255
im = Image.fromarray(imarray.astype('uint8')).convert('RGBA')
im.save('result_image.png')
The idea here is to create a numeric array, convert it to a RGB image, and save it to file. If you want grayscale image, you should use convert('L') instead of convert('RGBA').

This is simple with numpy and pylab. You can set the colormap to be whatever you like, here I use spectral.
from pylab import imshow, show, get_cmap
from numpy import random
Z = random.random((50,50)) # Test data
imshow(Z, cmap=get_cmap("Spectral"), interpolation='nearest')
show()

Your target image looks to have a grayscale colormap with a higher pixel density than 100x100:
import pylab as plt
import numpy as np
Z = np.random.random((500,500)) # Test data
plt.imshow(Z, cmap='gray', interpolation='nearest')
plt.show()

import numpy as np
import matplotlib.pyplot as plt
img = (np.random.standard_normal([28, 28, 3]) * 255).astype(np.uint8)
# see the raw result (it is 'antialiased' by default)
_ = plt.imshow(img, interpolation='none')
# if you are not in a jupyter-notebook
plt.show()
Will give you this 28x28 RGB image:

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With