Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Transparent equivalent of given color

I've had this a few times, so here goes: I'm making some plots which hold curves with estimates of a parameter given a tuning parameter.

Typically, I also have SDs for each estimated value, so I could show error bars around each of them.

However, I don't like error bars, and would prefer some smoothed version of it. This is in itself no problem (ie I know how to do this). However, my plot contains several of these similar curves, each one in its own color. So I would like to add the 'smoothed errorregion' to each curve in a color that matches the color of the curve itself. Of course, I would like to do this somewhat transparently, so I can still see the other curves through the 'error region'.

So, my question is: given a color (specified by either a number, a name or an rgb value --- note the first two pose an extra problem, but this is occurring rather often, as the basic plotting functions take these as valid color values), how can I find find the matching color that has the same rgb but a different (given) alpha level (transparency). I would like a function like:

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

This should work for things like:

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

Edit I hate it when I miss something obvious, but @themel pointed me to it (thx again). Here's a full solution (note: works vectorized, so you can pass more than one color; only one alpha is supported at this time though):

#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)}) } 
like image 202
Nick Sabbe Avatar asked Nov 08 '11 08:11

Nick Sabbe


People also ask

What is the color for transparent?

The hex code for transparent white (not that the color matters when it is fully transparent) is two zeros followed by white's hex code of FFFFFF or 00FFFFFF.

How do you make a color transparent?

On the Picture Format tab, select Color, and then select Set Transparent Color. Click the color in the picture or image that you want to make transparent. Note: You can't make more than one color in a picture transparent.

What is RGB for transparent color?

rgb(255, 0, 0);opacity:0.8; Notice that the text above will also be transparent/opaque!


1 Answers

There is a function adjustcolor in grDevices package, that works like this in your case:

    adjustcolor( "red", alpha.f = 0.2) 
like image 60
Stepan S. Sushko Avatar answered Oct 08 '22 20:10

Stepan S. Sushko