Nei grafici di R, è possibile utilizzare singoli colori o vettori di colori indicati con varie notazioni (nomi, RGB, sistema esadecimale), come anche palette (combinazioni standard) di colori.
Nei grafici, il colore è indicato con il parametro col=
.
È possibile indicare, come valore dell'argomento col
, o laddove sia richiesto un colore:
Esempi
require(car) #dati data(SLID) barplot(table(SLID$sex), horiz = F, names.arg = c("Donne", "Uomini"), col = "grey") pie( table(SLID$language), main = "Lingue parlate", labels = c("Inglese", "Francese", "Altro"), col = c("lightblue", "orange", "darkgreen") )
Come si è detto, i colori possono essere indicati con il nome ("orange"), con il valore esadecimale ("#FFA500"), o con il sistema RGB ("rgb(255,165,0)"). Per questi due ultimi sistemi, nel web si trovano svariate liste.
I nomi che R "capisce", possono essere elencati con la funzione colors()
:
head(colors(), 20)
## [1] "white" "aliceblue" "antiquewhite" "antiquewhite1" ## [5] "antiquewhite2" "antiquewhite3" "antiquewhite4" "aquamarine" ## [9] "aquamarine1" "aquamarine2" "aquamarine3" "aquamarine4" ## [13] "azure" "azure1" "azure2" "azure3" ## [17] "azure4" "beige" "bisque" "bisque1"
In questo caso, stampiamo i primi 20, ma sono 657, più "transparent".
Eseguendo il comando demo(colors)
, verranno caricate alcune funzioni utili a trovare e visualizzare i colori.
Ad esempio, per trovare colori simili ad uno il cui nome sia noto:
nearRcolor("red")
## 0.0000 0.0451 0.0667 0.0803 0.0830 ## "red" "orangered" "red2" "orangered2" "darkorange1" ## 0.0915 ## "darkorange"
Per avere un grafico dei colori:
scales::show_col(nearRcolor("cyan"), ncol=3)
Per scegliere o definire i colori in uso è possibile anche utilizzare le palette, set di colori indicizzati (vettore di colori).
Per conoscere i colori che compongono la palette in uso (ad esempio quella di default) si usa il comando palette()
palette()
## [1] "black" "#DF536B" "#61D04F" "#2297E6" "#28E2E5" "#CD0BBC" "#F5C710" ## [8] "gray62"
scales::show_col(palette(), ncol=4)
Le palette di colori disponibili nella distribuzione standard di R sono:
palette.pals()
## [1] "R3" "R4" "ggplot2" "Okabe-Ito" ## [5] "Accent" "Dark 2" "Paired" "Pastel 1" ## [9] "Pastel 2" "Set 1" "Set 2" "Set 3" ## [13] "Tableau 10" "Classic Tableau" "Polychrome 36" "Alphabet"
Conoscendo la palette e i colori in uso, è possibile indicare i colori con l'indice del colore nella palette in uso.
Esempio
barplot( table(SLID$language), horiz = T, main = "Lingue", names.arg = c("Inglese", "Francese", "Altro"), col = c(3:5) )
In questo caso col = c(3:5)
indica i colori dal terzo al quinto della paletta in uso.
Naturalmente, è sempre possibile indicare un solo colore (col = 4
), o una serie di colori non contigui (col = c(3, 7, 2, 5)
).
Per selezionare una palette di colori si usa la funzione palette()
.
par(mar=c(2,4,2,0.1)) # scegliamo una paletta palette("Pastel 2") boxplot(data = MYSLID, # formula Retribuzione ~ Genere, main = "Gender Gap", xlab = NULL, # ampiezza delle 'scatole' boxwex = 0.3, col = c(4,3))
# torniamo ai valori di default palette("default")
Alle palette viste, si aggiungono quelle incluse nel pacchetto colorspace (vedi la guida di colorspace))) :
e
A partire da queste, che hanno una diversa sintassi, possono essere costruite palette indicando anche il numero di colori desiderati:
palette(rainbow(20))
A questo punto i colori della paletta saranno:
palette() [1] "red" "#FF4C00" "#FF9900" "#FFE500" "#CCFF00" "#80FF00" "#33FF00" [8] "#00FF19" "#00FF66" "#00FFB2" "cyan" "#00B3FF" "#0066FF" "#0019FF" [15] "#3300FF" "#8000FF" "#CC00FF" "#FF00E6" "#FF0099" "#FF004D"
L’intera gamma di colori sarà suddivisa nel numero di colori indicato, andando a comporre la palette che entrerà poi in uso.
Anche in questo caso, per tornare alla paletta di default useremo:
palette("default")
Per visualizzare velocemente i colori di queste palette, possiamo costruire dei grafici a barre ad hoc con 10 colori delle stesse:
n = 10 barplot(rep(1, n), col = rainbow(10)) barplot(rep(1, n), col = heat.colors(10)) barplot(rep(1, n), col = terrain.colors(10)) barplot(rep(1, n), col = topo.colors(10)) barplot(rep(1, n), col = cm.colors(10))
È anche possibile definire una paletta di colori personalizzata, semplice-mente indicando i nomi dei colori che si vogliono utilizzare, nell’ordine preferito:
palette(c("red","green","green4","blue","cyan"))
Una volta dato il comando, la paletta di colori sarà attiva, e potrà essere utilizzata come le altre:
palette() [1] "red" "green" "green4" "blue" "cyan"
# file di dati require(car) data(SLID) # indicare i colori con il nome barplot(table(SLID$sex), horiz = F, names.arg = c("Donne", "Uomini"), col = "grey") pie( table(SLID$language), main = "Lingue parlate", labels = c("Inglese", "Francese", "Altro"), col = c("lightblue", "orange", "darkgreen") ) # elenco dei primi 20 colori in R head(colors(), 20) # funzioni per visualizzare i colori demo(colors) nearRcolor("red") plotCol(nearRcolor("cyan"), nrow=3) # indicare i colori con l'indice della palette barplot( table(SLID$language), horiz = T, main = "Lingue", names.arg = c("Inglese", "Francese", "Altro"), col = c(3:5) ) n = 4 barplot(rep(1, n), col = c(3, 7, 2, 5)) # conoscere i colori della palette palette() # impostare una palette diversa palette("Pastel 2") # impostare una palette del pacchetto colorspace palette(rainbow(20)) # tornare alla palette di default palette("default") # visualizzare i colori delle palette n = 10 barplot(rep(1, n), col = rainbow(10)) barplot(rep(1, n), col = heat.colors(10)) barplot(rep(1, n), col = terrain.colors(10)) barplot(rep(1, n), col = topo.colors(10)) barplot(rep(1, n), col = cm.colors(10))