versiones guia espaƱol descargar actualizar r colors alpha-transparency

r - guia - qgis manual



Equivalente transparente del color dado (4)

¿Has echado un vistazo a ?rgb ?

Uso:

rgb (rojo, verde, azul, alfa, nombres = NULL, maxColorValue = 1)

También se puede especificar un valor de transparencia alfa (como una opacidad, por lo que ''0'' significa totalmente transparente y ''máximo'' significa opaco). Si no se especifica alfa '', se genera un color opaco.

El parámetro alpha es para especificar la transparencia. col2rgb divide los colores R especificados de otras formas en RGB para que pueda alimentarlos a rgb .

He tenido esto algunas veces, así que aquí va: estoy haciendo algunas gráficas que tienen curvas con estimaciones de un parámetro dado un parámetro de ajuste.

Normalmente, también tengo SD para cada valor estimado, por lo que podría mostrar barras de error alrededor de cada uno de ellos.

Sin embargo, no me gustan las barras de error, y preferiría una versión suavizada de la misma. Esto no es un problema en sí mismo (es decir, sé cómo hacer esto). Sin embargo, mi trama contiene varias de estas curvas similares, cada una en su propio color. Así que me gustaría agregar la ''región de error suavizada'' a cada curva en un color que coincida con el color de la curva en sí. Por supuesto, me gustaría hacer esto de forma transparente, por lo que todavía puedo ver las otras curvas a través de la "región de error".

Entonces, mi pregunta es: dado un color (especificado por un número, un nombre o un valor de rgb), tenga en cuenta que los dos primeros plantean un problema adicional, pero esto ocurre con bastante frecuencia, ya que las funciones básicas de trazado los toman como válidos. valores de color), ¿cómo puedo encontrar el color coincidente que tiene el mismo rgb pero un nivel alfa diferente (dado) (transparencia). Me gustaría una función como:

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

Esto debería funcionar para cosas como:

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

Editar Lo odio cuando echo algo obvio, pero @themel me lo señaló (gracias de nuevo). Aquí hay una solución completa (nota: funciona vectorizado, por lo que puede pasar más de un color; sin embargo, solo admite un alfa en este momento):

#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)}) }


Convirtiendo comentarios valiosos para responder:

Use alpha de las scales del paquete : el primer argumento es el color, el segundo alfa (en el rango 0-1).

O escriba la función abiertamente:

makeTransparent <- function(someColor, alpha=100) scales::alpha(someColor, alpha/100)


Creo que es más común especificar alpha en [0,1] . Esta función lo hace, además de aceptar varios colores como argumentos:

makeTransparent = function(..., alpha=0.5) { if(alpha<0 | alpha>1) stop("alpha must be between 0 and 1") alpha = floor(255*alpha) newColor = col2rgb(col=unlist(list(...)), alpha=FALSE) .makeTransparent = function(col, alpha) { rgb(red=col[1], green=col[2], blue=col[3], alpha=alpha, maxColorValue=255) } newColor = apply(newColor, 2, .makeTransparent, alpha=alpha) return(newColor) }

Y, para probar:

makeTransparent(2, 4) [1] "#FF00007F" "#0000FF7F" makeTransparent("red", "blue") [1] "#FF00007F" "#0000FF7F" makeTransparent(rgb(1,0,0), rgb(0,0,1)) [1] "#FF00007F" "#0000FF7F" makeTransparent("red", "blue", alpha=0.8) [1] "#FF0000CC" "#0000FFCC"


Hay una función adjustcolor en el paquete grDevices , que funciona así en su caso:

adjustcolor( "red", alpha.f = 0.2)