brzepkowski
brzepkowski

Reputation: 265

Pyplot: How to make a colorbar with a nonlinear scale?

I want to add to my plot a colorbar, which has a nonlinear scale. For example, for such a plot:

enter image description here

I would like to have just 5 different colors on the bar on the right-hand side, instead of the gradient (don't pay attention to the plot itself; it's just an example).

I don't want to use contourf and would like to find some more general solution.

Upvotes: 0

Views: 697

Answers (1)

jwho
jwho

Reputation: 312

If you want to have discrete values in your colorbar, a quick way to do this would be to use the cmap=plt.cm.get_cmap() function and pass the name of whatever colormap class you are working with, along with the desired number of bins.

import matplotlib.pyplot as plt
plt.style.use('classic')
%matplotlib inline

import numpy as np

# Random Data Visualation
x = np.linspace(0, 10, 1000)
data = np.sin(x) * np.cos(x[:, np.newaxis])

plt.imshow(data, cmap=plt.cm.get_cmap('viridis', 5))
plt.colorbar()
plt.clim(-1, 1);

enter image description here

More documentation on everything color maps in Matplotlib [here]

Upvotes: 1

Related Questions