#python-3.x #matplotlib
Вопрос:
Я пытаюсь визуализировать контроль качества процесса производства деталей. Измеряются два критерия (a и b) и используются для расчета третьего (c), причем это третье значение используется для отслеживания качества процесса. На основе этого значения деталь либо проходит, либо выходит из строя, либо отправляется на доработку. Что я хотел бы сделать, так это сопоставить данные для партии деталей с базовой тепловой картой, показывающей эти границы прохождения/сбоя/переделки.
На этом изображении ниже показаны границы, нанесенные на pcolormap. В идеале я бы хотел, чтобы пять секций были окрашены слева направо как красный, янтарный, зеленый, янтарный, красный. Они соответствуют значениям <20, 21-30, 31-50, 51-70, >71.
Я попытался создать 5-цветное изображение, чтобы наложить его на это — оно расположено вдоль правильных линий, но цвета отображаются неправильно. Предположительно, потому что cmap масштабируется до базовых значений, а не до необходимых фиксированных границ. Игра с Vmin/Vmax затягивает ситуацию, но все еще не совсем правильно.
colours = ['red', 'orange', 'green', 'orange', 'red']
cmap = ListedColormap(colours)
plt.pcolormesh(a, b, c, cmap = cmap, shading = 'auto', vmin = 20, vmax = 70)
plt.pcolormesh(a, b, boundaries, cmap='binary', shading = 'auto', alpha = 0.5)
plt.show
Есть ли способ раскрасить ячейки в зависимости от их значения или создать cmap, который не масштабируется в соответствии с данными?
Комментарии:
1. Я думаю, что то, что вам нужно, — это граничная норма matplotlib.org/stable/api/_as_gen/…
2. Спасибо. Добавление нормы = Граничная норма((0, 20, 30, 50, 70, 100), ncolors=num_colours, clip=False), казалось, разобрался в этом.