How to split filters into individual RGB channels

I have a filter output from a single layer in the network, how do I then split the output into individual RGB channels to view the filter in each channel separately. I currently have this, but it just looks like the image is coloured:

    weights = weights - weights.min()
    weights = weights / weights.max()
    display = torchvision.utils.make_grid(weights, nrow = 8)
    display = display.permute(1, 2, 0)
    plt.imshow(display[:,:,0], cmap='Reds')
    plt.show()
    plt.imshow(display[:,:,0], cmap='Greens')
    plt.show()
    plt.imshow(display[:,:,0], cmap='Blues')

which gives images:
image
image
image

The output uses the specified colormaps and you could change it to e.g. grayscale, if you don’t want to use them in their current setup.
I don’t know, how weights were created, but assuming it’s a tensor containing the filters, where each has 3 input channels, I would split this tensor into the R, G, and B parts, and visualize them separately.