Legenda (legend)
Per inserire una legenda nel grafico, si utilizza il comando legend()
. La legenda occupa un livello a se stante, e viene disegnata sopra il grafico. Pertanto il comando va dato dopo quello che disegna il grafico:
plot() legend()
Funzione
legend(x, y = NULL, legend, fill = NULL, col = par("col"), border="black", lty, lwd, pch, angle = 45, density = NULL, bty = "o", bg = par("bg"), box.lwd = par("lwd"), box.lty = par("lty"), box.col = par("fg"), pt.bg = NA, cex = 1, pt.cex = cex, pt.lwd = lwd, xjust = 0, yjust = 1, x.intersp = 1, y.intersp = 1, adj = c(0, 0.5), text.width = NULL, text.col = par("col"), text.font = NULL, merge = do.lines && has.pch, trace = FALSE, plot = TRUE, ncol = 1, horiz = FALSE, title = NULL, inset = 0, xpd, title.col = text.col, title.adj = 0.5, seg.len = 2)
Gli elementi essenziali della legenda sono, comunque:
- le coordinate del box della legenda (x,y), ovvero la posizione della legenda nell’area del grafico, definite in base alla scala degli assi;
- le voci della legenda (
legend
); - i simboli (
pch
) o le linee (lty
,ltw
) ed eventualmente — se il grafico è a colori — i colori (col
,pt.col
,pt.bg
,fill
) corrispondenti alle voci della legenda; - il titolo (
title
).
L’argomento legend
può essere utilizzato direttamente nel comando del grafico. La legenda verrà per il resto disegnata con le opzioni di default: in altro a destra, con contorno nero, riempimento trasparente, senza titolo.
# dati require(car) data(SLID) barplot( table(SLID$language, SLID$sex), beside = T, col = c(2:4), legend = levels(SLID$language) )
Per avere la legenda nel grafico, è stato sufficiente inserire l'argomento legend
ed indicare i livelli della variabile come testo della legenda.
Parametri principali
x , y | coordinate per la legenda |
legend | voci della legenda |
fill | Colore di riempimento dei quadrati con i colori indicati. Obbligatorio per i grafici a barre, o con aree colorate (come i grafici a torta) |
border | Colore del bordo dei quadrati con i colori |
col | colore dei punti o delle linee che appariranno nella legenda |
lty , lwd | Tipo e spessore delle linee che appariranno nella legenda. Obbligatorio se il grafico contiene delle linee |
pch | tipo di punti che appariranno nella legenda, da indicare con un vettore di un carattere o di più caratteri. Obbligatorio se il grafico contiene dei punti |
pt.bg | colore di riempimento dei punti (col indica il colore del bordo, e il riempimento sarà bianco) |
cex | dimensione dei caratteri; indicandolo, si definisce il default per testi, titolo e punti |
pt.cex | dimensione dei punti |
title | titolo della legenda; possono essere usati qui alcuni argomenti della funzione title() |
box.col | colore del bordo della legenda |
Per la sintassi, cfr. Parametri grafici.
Per la gestione dei colori, cfr. Gestione dei colori.
Esempi
Esempio 1
Costruiamo un grafico a barre bivariato:
barplot(table(SLID$language, SLID$sex), names.arg = c("Donne", "Uomini")) # traduco le modalità
Aggiungiamo la legenda:
legend( "bottomright", legend = c("Inglese", "Francese", "Altro"), # traduco le modalità fill = gray.colors(3), # palette bg = "white", # sfondo bianco title = "Lingua" # inserisco il titolo )
In questo caso, il colore è stato indicato con gray.colors(3)
, perché per default barplot
usa i toni di grigio, e divide la gamma per il numero delle modalità che devono essere rappresentate (vedi Gestione dei colori).
Esempio 2
Costruiamo il grafico a dispersione delle variabili “education” e “wages” del dataset MYSLID, e rappresentiamo sul piano una terza variabile “sex” attraverso il colore dei punti.
plot(SLID$education, SLID$wages, xlab = "Anni di istruzione", ylab = "Retribuzione media", pch = 21, # tipo di punto col = SLID$sex, # bordo dei punti bg = SLID$sex # riempimento dei punti )
Aggiungiamo la legenda:
legend("topleft", legend = c("Donne", "Uomini"), # testo della legenda pch = 21, # tipo di punto col = c(1:2), # bordo dei punti pt.bg = c(1:2), # riempimento dei punti title = "Genere")
In questo caso, il colore dei punti della legenda è stato indicato con c(1:2)
, perché per default i grafici usano i colori della palette, nell'ordine in cui sono disposti nella palette stessa (vedi Gestione dei colori).
Script di esempio (download)
- Legenda.R
# dati require(car) data(SLID) # argomento legend barplot( table(SLID$language, SLID$sex), beside = T, col = c(2:4), legend = levels(SLID$language) ) # esempio 1 barplot(table(SLID$language, SLID$sex), names.arg = c("Donne", "Uomini")) # traduco le modalità legend( "bottomright", legend = c("Inglese", "Francese", "Altro"), # traduco le modalità fill = gray.colors(3), # palette bg = "white", # sfondo bianco title = "Lingua" # inserisco il titolo ) # esempio 2 plot(SLID$education, SLID$wages, xlab = "Anni di istruzione", ylab = "Retribuzione media", pch = 21, # tipo di punto col = SLID$sex, # bordo dei punti bg = SLID$sex # riempimento dei punti ) legend("topleft", legend = c("Donne", "Uomini"), # testo della legenda pch = 21, # tipo di punto col = c(1:2), # bordo dei punti pt.bg = c(1:2), # riempimento dei punti title = "Genere")