Bioestatística
Prof. Dr. Edson Zangiacomi Martinez
Faculdade de Medicina de Ribeirão Preto
Universidade de São Paulo (USP)
Esta página está em construção!
Todo seu conteúdo não é definitivo...
Cores
Palettes
Tons de cinza
Palettes
O R define uma palette como um vetor de cores.
A função palette() retorna um vetor básico de cores.
palette()
[1] "black" "red" "green3" "blue" "cyan" "magenta" "yellow"
[8] "gray"
palette()[2]
[1] "red"
A função plotCol() exibe uma cor ou um vetor de cores.
# Author: Marius Hofert
# Source: https://github.com/jeffreyhorner/R-Judy-Arrays/blob/master/src/library/grDevices/demo/colors.R
library(grid)
plotCol <- function(col, nrow=1, ncol=ceiling(length(col) / nrow), txt.col="black") {
stopifnot(nrow >= 1, ncol >= 1)
if(length(col) > nrow*ncol)
warning("some colors will not be shown")
require(grid)
grid.newpage()
gl <- grid.layout(nrow, ncol)
pushViewport(viewport(layout=gl))
ic <- 1
for(i in 1:nrow) {
for(j in 1:ncol) {
pushViewport(viewport(layout.pos.row=i, layout.pos.col=j))
grid.rect(gp= gpar(fill=col[ic]))
grid.text(col[ic], gp=gpar(col=txt.col))
upViewport()
ic <- ic+1
}}
upViewport()
invisible(gl)
}
# Exemplos:
plotCol("yellow")
plotCol(palette())
plotCol(palette(),nrow=2)
Outros vetores são: heat.colors, terrain.colors, topo.colors, cm.colors e rainbow.
heat.colors(10)
[1] "#FF0000FF" "#FF2400FF" "#FF4900FF" "#FF6D00FF" "#FF9200FF" "#FFB600FF"
[7] "#FFDB00FF" "#FFFF00FF" "#FFFF40FF" "#FFFFBFFF"
# Para visualizar estas cores, escreva:
plotCol(heat.colors(10),nrow=2)
Observe que uma cor pode ser especificada pelo seu nome ou pelo seu código RGB hexadecimal (R: red, G:green, B:blue).
Por exemplo, a cor vermelha é R = 255, G = 0 e B = 0.
Podemos usar a função rgb() para obter sua especificação em hexadecimal:
rgb(255,0,0,maxColorValue=255)
[1] "#FF0000"
A função col2rgb() é útil para se obter a especificação RGB de uma cor específica.
# Exemplos
col2rgb("yellow")
[,1]
red 255
green 255
blue 0
col2rgb("brown")
[,1]
red 165
green 42
blue 42
# Outro exemplo, considerando as palettes do R:
par(mar=c(1,1,0.1,1))
plot(c(1,200),c(1,200),axes=F,col=0)
amostra.cores <- function(palette,nome,posicao) {
cor <- 1
text(0,posicao,as.character(nome),pos=4)
for (k in seq(1,200,10)) {
rect(k,posicao-10,k+10,posicao-30,col=palette[cor])
text(k+5,posicao-20,cor,col="black")
cor <- cor+1 }}
amostra.cores(heat.colors(20),"heat.colors(20)",190)
amostra.cores(terrain.colors(20),"terrain.colors(20)",150)
amostra.cores(topo.colors(20),"topo.colors(20)",110)
amostra.cores(cm.colors(20),"cm.colors(20)",70)
amostra.cores(rainbow(20),"rainbow(20)",30)
Tons de cinza
A função gray.colors(n) gera um vetor de n tons de cinza.
Podemos escrever gray.colors(n) ou grey.colors().
gray.colors(5)
[1] "#4D4D4D" "#888888" "#AEAEAE" "#CCCCCC" "#E6E6E6"
grey.colors(5)
[1] "#4D4D4D" "#888888" "#AEAEAE" "#CCCCCC" "#E6E6E6"
# Para visualizar as cores deste vetor:
plotCol(grey.colors(5))
# Vinte tons de cinza:
plotCol(gray.colors(20),nrow=4)
# Exemplo
par(mar=c(1,1,0.1,1))
plot(c(1,200),c(1,200),axes=F,col=0)
amostra.cores <- function(palette,nome,posicao,tons) {
cor <- 1
text(0,posicao,as.character(nome),pos=4)
for (k in seq(1,200,(200/tons))) {
rect(k,posicao-10,k+(200/tons),posicao-30,col=palette[cor])
text(k+(100/tons),posicao-20,cor,col="black")
cor <- cor+1 }}
amostra.cores(gray.colors(20),"gray.colors(20)",190,20)
amostra.cores(gray.colors(10),"gray.colors(10)",150,10)
amostra.cores(gray.colors(7),"gray.colors(7)",110,7)
amostra.cores(gray.colors(5),"gray.colors(5)",70,5)
amostra.cores(gray.colors(20, start = 0.6, end = 0.9),"gray.colors(20, start = 0.6, end = 0.9)",30,20)
A função gray(k), em que k é um número entre 0 e 1, também gera tons de cinza.
Podemos escrever gray() ou grey().
grey(0)
[1] "#000000"
grey(1)
[1] "#FFFFFF"
grey(0:10/10)
[1] "#000000" "#1A1A1A" "#333333" "#4D4D4D" "#666666" "#808080" "#999999"
[8] "#B3B3B3" "#CCCCCC" "#E6E6E6" "#FFFFFF"
plotCol(gray(0:10/10))
Função colors()
A função colors() retorna os nomes de cores que o R conhece.
Podemos escrever colors() ou colours().
colors()
[1] "white" "aliceblue" "antiquewhite" "antiquewhite1" "antiquewhite2" [6] "antiquewhite3" "antiquewhite4" "aquamarine" "aquamarine1" "aquamarine2"
[11] "aquamarine3" "aquamarine4" "azure" "azure1" "azure2"
[16] "azure3" "azure4" "beige" "bisque" "bisque1"
[21] "bisque2" "bisque3" "bisque4" "black" "blanchedalmond"
[26] "blue" "blue1" "blue2" "blue3" "blue4"
[31] "blueviolet" "brown" "brown1" "brown2" "brown3"
[36] "brown4" "burlywood" "burlywood1" "burlywood2" "burlywood3"
[41] "burlywood4" "cadetblue" "cadetblue1" "cadetblue2" "cadetblue3"
[46] "cadetblue4" "chartreuse" "chartreuse1" "chartreuse2" "chartreuse3"
[51] "chartreuse4" "chocolate" "chocolate1" "chocolate2" "chocolate3"
...etc...
A função a seguir mostra estas cores.
par(mar=c(1,1,1,1))
plot(c(1,200),c(1,260),axes=F,col=0)
cor <- 1
cortx <- rep("black",400)
cortx[c(24,26:30,73,107,108,153:200,261:300,461,477,490,491)] <- "white"
for (j in seq(260,1,-20)) {
for (k in seq(1,200,10)) {
rect(k,j,k+10,j-20,col=colors()[cor])
text(k+5,j-10,cor,col=cortx[cor])
cor <- cor+1 }}
Por último, experimente escrever:
demo(colors)