Прозрачный эквивалент заданного цвета

У меня это было несколько раз, так что вот: я делаю несколько графиков, которые содержат кривые с оценками параметра при заданном параметре настройки .

Обычно у меня также есть SD для каждого оценочного значения, поэтому я могу показать планки ошибок вокруг каждого из них.

Однако мне не нравятся полосы ошибок, и я бы предпочел их сглаженную версию. Само по себе это не проблема (т.е. я знаю, как это сделать). Однако мой график содержит несколько подобных кривых, каждая из которых имеет свой цвет. Поэтому я хотел бы добавить «сглаженную область ошибок» к каждой кривой, цвет которой соответствует цвету самой кривой. Конечно, я хотел бы сделать это несколько прозрачно, чтобы я мог видеть другие кривые через «область ошибок».

Итак, мой вопрос: учитывая цвет (указываемый числом, именем или значением rgb - обратите внимание, первые два создают дополнительную проблему, но это происходит довольно часто, поскольку основные функции построения графиков принимают как допустимые значения цвета), как мне найти соответствующий цвет, который имеет тот же RGB, но другой (заданный) альфа-уровень (прозрачность). Мне нужна функция вроде:

makeTransparent<-function(someColor, alpha=100)
{
  newColor<-someColor + alpha #I wish
  return(newColor)
}

Это должно работать для таких вещей, как:

makeTransparent(2)
makeTransparent("red")
makeTransparent(rgb(0,0,1))

Edit Ненавижу, когда я пропускаю что-то очевидное, но @themel указал мне на это (еще раз спасибо).Вот полное решение (примечание: работает в векторизованном виде, поэтому вы можете передать более одного цвета; в настоящее время поддерживается только один альфа-канал):

#note: always pass alpha on the 0-255 scale
makeTransparent<-function(someColor, alpha=100)
{
  newColor<-col2rgb(someColor)
  apply(newColor, 2, function(curcoldata){rgb(red=curcoldata[1], green=curcoldata[2],
    blue=curcoldata[3],alpha=alpha, maxColorValue=255)})
}
51
задан Nick Sabbe 7 November 2011 в 21:53
поделиться