U, S, VT = np.linalg.svd(X,full_matrices=False)
S = np.diag(S)
j = 0
for r in (5, 20, 100):
Xapprox = U[:,:r] @ S[0:r,:r] @ VT[:r,:]
plt.figure(j+1)
j += 1
img = plt.imshow(Xapprox)
img.set_cmap('gray')
plt.axis('off')
plt.title('r = ' + str(r))
plt.show()