I have several curves that differ in one parameter and which I want to build in one drawing. To distinguish them, I want to use one of the matplotlib color panels. To do this, I create a list of colors depending on the specified parameter. In addition, I want to add a color bar to explain the colors used. I can easily do all this. The problem is that I want to use only part of the available color map, as it becomes too bright and, thus, barely noticeable above a certain threshold. But when I now select colors only in the sub-range, I did not find a way to adjust the range of the displayed color panel.
Here is a (almost) minimal example of what I want to achieve:
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
gs = gridspec.GridSpec(2, 1,
height_ratios=[1, 4]
)
ax = [plt.subplot(g) for g in gs]
parameterToColorBy = np.linspace(5, 10, 6, dtype=float)
maxColor = 0.85
colors = [plt.get_cmap("inferno")(i)
for i in np.linspace(0, maxColor, parameterToColorBy.shape[0])]
norm = mpl.colors.Normalize(parameterToColorBy[0],
parameterToColorBy[0]+
(parameterToColorBy[-1]-parameterToColorBy[0])/
maxColor)
cb = mpl.colorbar.ColorbarBase(ax[0],
cmap="inferno",
norm=norm,
ticks=parameterToColorBy,
orientation='horizontal')
ax[0].xaxis.set_ticks_position('top')
for p, c in zip(parameterToColorBy, colors):
ax[1].plot(np.arange(2)/p, c=c)
plt.show()
:

, 10. xlim , ax[0].set_xlim(0, maxColor), , :

, colorbars set_clim. , , , . cb.set_clim(parameterToColorBy[0], parameterToColorBy[-1]) , :

, , - , . ?