gray - rgb in r
En R, es posible superponer 2 colores en un trazado para hacer un tercero(por ejemplo, con mezcla de colores aditivos o sustractivos) (1)
El archivo de ayuda para el dispositivo pdf () dice que la configuración predeterminada para el fondo es "transparente", aunque no parece ser su comportamiento en la práctica, tal vez porque los espectadores asumen un fondo blanco o quizás porque el valor predeterminado para la función de trazado es " blanco". La sección central primero se convierte en un color que es una mezcla igual de blanco y verde, y en segundo lugar segundo , luego le agregas el azul. Así que supongo que los cálculos matemáticos predecirían un valor rgb de (0.5, 0.5, (0.5 + 0.8) / 2) seguido de la mezcla de esa mezcla con el color superpuesto Y creo que el blanco + col1 se agrega en proporciones iguales al valores de col2 que hacen que la matemática no sea conmutativa. En cualquier caso, el resultado final probablemente será diferente si puede forzar el fondo a "transparente". El comportamiento predeterminado es más como mezclar pinturas que como luces brillantes de teatro.
El modelo de color PDF se describe en http://www.adobe.com/devnet/pdf/pdf_reference.html y determinará lo que puede esperar de un dispositivo pdf (pero no necesariamente lo que proporcionará un espectador).
Probé mi teoría de que el fondo blanco era el problema (y parece que lo había refutado) cambiando el fondo a "negro" con la esperanza de que no hubiera valores agregados a los vectores rgb en capas:
pdf("testfil12rev.pdf", bg="black")
col1 <- rgb(red = .0, green = 0, blue = 1, alpha = 0.5)
col2 <- rgb(red = 1, green = 0, blue = 0, alpha = 0.5)
circle <- data.frame(x = c(0.2,0),
y = c(0,0),
col = c(col1, col2),
stringsAsFactors = F)
orders <- c(1,2)
plot(x = circle$x[orders], y = circle$y[orders], bg="black",
col = circle$col[orders], pch = 19, cex = 100, xlab = "", ylab = "")
dev.off()
Invertir el indicador de ''pedidos'' tampoco produce el mismo color mezclado con un fondo negro.
EDITAR: Existe una publicación previa de SO con las reglas para combinar colores y alfas: ¿Cómo calcular un color RGB especificando una cantidad de mezcla alfa?
Me gustaría hacer un gráfico de dispersión con 2 categorías de datos, uno trazado en amarillo y otro en azul, y que aparezcan en verde donde se superponen (o cualquier otra combinación). He encontrado que las cosas son un poco más difíciles incluso con transparencia. El color de la gráfica se ve influenciado por si el último punto trazado en un espacio fue azul o amarillo.
Por ejemplo con el siguiente código:
col1 <- rgb(red = .0, green = 0, blue = 0.8, alpha = 0.8)
col2 <- rgb(red = .8, green = 0.8, blue = 0, alpha = 0.8)
circle <- data.frame(x = c(0.2,0),
y = c(0,0),
col = c(col1, col2),
stringsAsFactors = F)
orders <- c(1,2)
plot(x = circle$x[orders], y = circle$y[orders],
col = circle$col[orders], pch = 19, cex = 100, xlab = "", ylab = "")
Dependiendo de cómo establezca las orders
vectoriales (que establecen la forma en que se dibujan los dos puntos grandes) obtendrá diferentes resultados:
Y si cambias el orden en el que trazas los dos círculos, obtienes:
De cualquier manera, estaba anticipando mezclar los colores para obtener un verde. ¿Hay alguna forma de hacer esto? ¡Gracias!
Editar - las dos parcelas se hicieron utilizando el dispositivo pdf. También he intentado ejecutar el código a través de tikzDevice para ver si funcionó, pero no lo hizo.