Как насчет этого?
x = 20
y = 10
scale_factor = 3
fig, ax = plt.subplots(figsize=(x / scale_factor, y / scale_factor))
ax.axis(xmin=0, xmax=x, ymin=0, ymax=y)
ax.tick_params(left=False, labelleft=False, bottom=False, labelbottom=False)
ax.xaxis.set_major_locator(ticker.MultipleLocator(1.0))
ax.yaxis.set_major_locator(ticker.MultipleLocator(1.0))
ax.grid(color='black')
cell_ids = [2, 4, 5, 11, 45, 48, 98]
cell_values = [20, 45, 55, 77, 45, 30, 15]
cdict = {'red': [[0.0, 0.0, 0.0],
[0.5, 0.0, 0.0],
[1.0, 0.5, 0.5]],
'green': [[0.0, 0.0, 0.0],
[0.5, 1.0, 1.0],
[1.0, 1.0, 1.0]],
'blue': [[0.0, 0.0, 0.0],
[0.5, 0.0, 0.0],
[1.0, 0.5, 0.5]]}
cmap = colors.LinearSegmentedColormap('greens', cdict)
for cell_id, cell_value in zip(cell_ids, cell_values):
cell_x = cell_id % x
cell_y = cell_id // y
ax.add_artist(patches.Rectangle((cell_x, cell_y), 1.0, 1.0, color=cmap(cell_value * 255 // 100)))
(Вы можете задать отдельный вопрос для 3D-детали - это не совсем понятно)
