Я строю одну строку данных, используя pcolorme sh, чтобы обеспечить цветовое кодирование для статистического вывода результатов теста вместе с серией времени.
Я использую дискретизированную цветовую карту, и при правильном количестве цветов по сравнению с ячейками в bordernorm я вижу, что значения, которые я пытаюсь построить, не отображаются на правильный цвет. Например, третья точка данных и полоса имеют значение 94, но принимают цвет, сопоставленный между 95 и 97,5. Пример ниже.
import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl
# bbox
cb_x0 = 0.95
cb_y0 = 0.1225
cb_xlen = 0.05
cb_ylen = 0.205
cmap_whole = plt.cm.get_cmap('YlOrRd')
cmap0 = 'white'
cmap1 = cmap_whole(0.1)
cmap2 = cmap_whole(0.2)
cmap3 = cmap_whole(0.4)
cmap4 = cmap_whole(0.6)
cmap5 = cmap_whole(0.9)
colors = [cmap0,cmap1,cmap2,cmap3,cmap4,cmap5]
cmap_cl = mpl.colors.ListedColormap(colors, N=len(colors))
values = [85,90,92.5,95,97.5,99,100]
# coordinates and data
x = np.arange(1985,2020,3)
y = np.arange(0,2,1)
data = [17.0, 99.0, 94.0, 98.0, 82.0, 99.0, 99.0, 45.0, 55.0, 57.0, 94.0]
# plotting
f,ax = plt.subplots(nrows=1,ncols=1)
h = ax.pcolormesh(x,y,np.reshape(data,(1,len(data))), cmap = cmap_cl, vmin = 85, vmax = 100)
ax.tick_params(left=False,labelleft=False,bottom=True,labelbottom=False)
norm = mpl.colors.BoundaryNorm(values,6,clip=True)
cbax = f.add_axes([cb_x0, cb_y0, cb_xlen, cb_ylen])
cb = mpl.colorbar.ColorbarBase(ax=cbax, cmap=cmap_cl,
norm=norm,
spacing='proportional',
orientation='vertical',
boundaries=values,
extend='neither',
ticks=values)
cb.ax.tick_params(labelcolor='0.2', labelsize=7, color='k', width=0.5, direction='out');
cb.ax.set_yticklabels(['0%','90%',None,'95%',None,None,'100%'])
cb.outline.set_linewidth(0.6)
plt.show(h)
вот моя цифра