Я рисую кучу данных в лог-шкале в виде графика разброса в matplotlib (на всякий случай, когда среда имеет значение) с использованием цветов RGBA. То, что я хотел бы сделать, - это как только я построил все, я хочу выделить отдельные точки разброса и изменить их оттенок на оттенок некоторого RGB-цвета, но сохраняя старую альфа-значение. То, как я сейчас это делаю, это:
oldHSV = rgb_to_hsv(oldRGBA[:3])
newHSV = rgb_to_hsv(newRGB)
oldHSV[0] = newHSV[0]
newRGBA = hsv_to_rgb(oldHSV).tolist() + [oldRGBA[3]]
то есть. Я беру RGB часть старого значения RGBA, превращаю его в HSV, делаю то же самое для нового намеченного цвета RGB, затем заменяем оттенок, возвращаем его обратно в RGB и добавляем к старому альфа-значению.
Поскольку я делаю это тысячи раз, это может занять значительно больше времени, чем я хотел бы провести здесь. Одно из возможных исправлений заключалось бы в том, чтобы вникать в преобразование между RGB и HSV и выяснить, как это сделать за один раз, но я надеялся, что люди, которые знают, как обращаться с цветом (я действительно этого не делаю), выяснили простые и эффективные способы сделать это.
Как мне изменить оттенок заданного цвета RGBA A на определенный RGB-цвет B при сохранении альфа-значения A? Может ли использование другой цветовой модели (например, HSL) упростить задачу, и если да, то это поможет?