How do I ensure that the colorbar has all the end values for each colorband? For example, in the current output, the greyband has no end value. I present the expected output where the greyband has the end value i.e. 5.4035. More generally, I want a command which enables all the values of the colorbands.
import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle
import numpy as np
from matplotlib.colors import Normalize
from matplotlib import cm
import math
fig,ax = plt.subplots(1)
n=3
N=2*n*(n-1)
p=np.array([[0.0000535 , 0.000051590914956234785,
0.00005031819159372464 , 0.00005286363831874494 ,
0.000052227276637489866, 0.00004904546823121452 ,
0.000049681829912469585, 0.00004650002150619425 ,
0.00004777274486870438 , 0.00004713638318744931 ,
0.00005095455327497972 , 0.000054035 ]])
p=p.reshape(12,1)
P = np.array(p)
P=P.reshape(len(P),1)
Max=max(P)
Min=min(P)
a=Min
b=Max
Amax= b*math.ceil(Max)
print("Amax =",Amax)
Amin= a*math.floor(Min/a)
print("Amin =",Amin)
color = cm.get_cmap('Dark2')
norm = Normalize(vmin=Amin, vmax=Amax)
color_list = []
for i in range(len(P)):
color_list.append(color((P[i]-Amin)/(Amax-Amin)))
#color_list.append(color(((P[0,i])-Amin)/(Amax-Amin)))
id = 0
for j in range(0, n):
for k in range(n-1):
ax.hlines(200+200*(n-j-1)+5*n, 200*(k+1)+5*n, 200*(k+2)+5*n, zorder=0, colors=color_list[id])
id += 1
for i in range(0, n):
rect = mpl.patches.Rectangle((200+200*i, 200+200*j), 10*n, 10*n, linewidth=1, edgecolor='black', facecolor='black')
ax.add_patch(rect)
if j < n-1:
ax.vlines(200+200*i+5*n, 200*(n-1-j)+5*n, 200*(n-j)+5*n, zorder=0, colors=color_list[id])
id += 1
cb = fig.colorbar(cm.ScalarMappable(cmap=color, norm=norm))
cb.set_ticks(np.arange(Amin, Amax, (Amax-Amin)/8).astype(float))
cb.set_label("Radius (m)")
ax.set_xlim(left = 0, right = 220*n)
ax.set_ylim(bottom = 0, top = 220*n)
plt.axis('off')
plt.show()
The current output is
The expected output is


