corso di bioinformatica -...
TRANSCRIPT
![Page 1: Corso di Bioinformatica - Uniudusers.dimi.uniud.it/~dario.dellamonica/teaching/corso_BDlab_18/slid… · Etichettare gli assi (includendo le unità di misura) 2. Aggiungere un titolo](https://reader033.vdocuments.pub/reader033/viewer/2022050409/5f867eae453cae1cc629d3da/html5/thumbnails/1.jpg)
Parametri grafici in RCorso di Bioinformatica
Nicola VitacolonnaCorso di Laurea in Biotecnologie
![Page 2: Corso di Bioinformatica - Uniudusers.dimi.uniud.it/~dario.dellamonica/teaching/corso_BDlab_18/slid… · Etichettare gli assi (includendo le unità di misura) 2. Aggiungere un titolo](https://reader033.vdocuments.pub/reader033/viewer/2022050409/5f867eae453cae1cc629d3da/html5/thumbnails/2.jpg)
Grafici esplorativi vs grafici finali
1. Etichettare gli assi (includendo le unità di misura)
2. Aggiungere un titolo
3. Curare altri aspetti estetici (colori, spessori delle linee, dimensione del testo, etc…)
4. Aggiungere una legenda se necessario
5. Preparare una didascalia per spiegare il grafico
Durante l'esplorazione dei dati non è necessario preoccuparsi troppo della qualità esteticadei grafici (a meno che ciò non sia funzionale all'analisi stessa)
Quando si prepara un grafico finale per una relazione, una tesi, un articolo o per l'esame ènecessario curare il grafico nei dettagli
·
·
2/25
![Page 3: Corso di Bioinformatica - Uniudusers.dimi.uniud.it/~dario.dellamonica/teaching/corso_BDlab_18/slid… · Etichettare gli assi (includendo le unità di misura) 2. Aggiungere un titolo](https://reader033.vdocuments.pub/reader033/viewer/2022050409/5f867eae453cae1cc629d3da/html5/thumbnails/3.jpg)
Riepilogo: la funzione plot()Funzione generica: il tipo di grafico dipende dalla classe degli argomenti
COMANDO CLASSE DEGLI ARGOMENTI RISULTATO
plot(x,y) x e y vettori numerici scatterplot
plot(x,y, type = "l") x e y vettori numerici grafico a linee
plot(x,y) x factor, y vettore numerico boxplot multiplo: equivalente a boxplot(y ~ x)
plot(x) x vettore numerico scatterplot
plot(x, type = "l") x vettore numerico grafico a linee
plot(x) x factor grafico a barre: equivalente a barplot(table(x))
plot(x) x tabella di contingenza a 1 via grafico a bastoncini
plot(x) x tabella di contingenza a 2 o piú vie grafico a mosaico
plot(x) x serie temporale grafico a linee
plot(x) x data frame grafici distribuzionali delle variabili nel data frame
3/25
![Page 4: Corso di Bioinformatica - Uniudusers.dimi.uniud.it/~dario.dellamonica/teaching/corso_BDlab_18/slid… · Etichettare gli assi (includendo le unità di misura) 2. Aggiungere un titolo](https://reader033.vdocuments.pub/reader033/viewer/2022050409/5f867eae453cae1cc629d3da/html5/thumbnails/4.jpg)
Riepilogo: altre funzioni grafiche
COMANDO CLASSE DEGLI ARGOMENTI RISULTATO
hist(x) x vettore numerico istogramma
boxplot(x) x vettore numerico boxplot
boxplot(y ~ x) x factor, y vettore numerico boxplot multiplo
stripchart(y ~ x) x factor, y vettore numerico strip chart
barplot(x) x vettore numerico o tabella di contingenza a 1 via grafico a barre semplice
barplot(x) x matrice o tabella di contingenza a 2 vie grafico a barre segmentato o multiplo
dotchart(x) x vettore numerico o matrice dot chart
image(x,y,z) x e y vettori numerici, z matrice heat map
mosaicplot(x) x tabella di contingenza a n vie grafico a mosaico
|x| × |y|
4/25
![Page 5: Corso di Bioinformatica - Uniudusers.dimi.uniud.it/~dario.dellamonica/teaching/corso_BDlab_18/slid… · Etichettare gli assi (includendo le unità di misura) 2. Aggiungere un titolo](https://reader033.vdocuments.pub/reader033/viewer/2022050409/5f867eae453cae1cc629d3da/html5/thumbnails/5.jpg)
Parametri grafici
I comandi grafici hanno numerosi parametri dai nomi spesso poco intuitivi
Alcuni parametri, comuni a tutti i comandi grafici, sono descritti in ?plot
La descrizione di ulteriori parametri si ottiene con ?par
Alcuni parametri importanti:
·
·
·
·
main: titolo del grafico
xlab, ylab: nomi degli assi
xlim, ylim: limiti degli assi
col: specificazione dei colori
cex: dimensione del testo
-
-
-
-
-
5/25
![Page 6: Corso di Bioinformatica - Uniudusers.dimi.uniud.it/~dario.dellamonica/teaching/corso_BDlab_18/slid… · Etichettare gli assi (includendo le unità di misura) 2. Aggiungere un titolo](https://reader033.vdocuments.pub/reader033/viewer/2022050409/5f867eae453cae1cc629d3da/html5/thumbnails/6.jpg)
Esempio
set.seed(1482)
x <- rnorm(10000)
y <- rnorm(10000)
plot(x, y)
6/25
![Page 7: Corso di Bioinformatica - Uniudusers.dimi.uniud.it/~dario.dellamonica/teaching/corso_BDlab_18/slid… · Etichettare gli assi (includendo le unità di misura) 2. Aggiungere un titolo](https://reader033.vdocuments.pub/reader033/viewer/2022050409/5f867eae453cae1cc629d3da/html5/thumbnails/7.jpg)
Titolo di un grafico
Parametro main
plot(x, y, main = "Distribuzione congiunta di due variabili normali")
7/25
![Page 8: Corso di Bioinformatica - Uniudusers.dimi.uniud.it/~dario.dellamonica/teaching/corso_BDlab_18/slid… · Etichettare gli assi (includendo le unità di misura) 2. Aggiungere un titolo](https://reader033.vdocuments.pub/reader033/viewer/2022050409/5f867eae453cae1cc629d3da/html5/thumbnails/8.jpg)
Nomi degli assi
Parametri xlab (asse orizzontale) e ylab (asse verticale)
plot(x, y, main = "Distribuzione congiunta di due variabili normali", xlab = "Variabile uno (unità di misura)"
ylab = "Variabile due (unità di misura)")
8/25
![Page 9: Corso di Bioinformatica - Uniudusers.dimi.uniud.it/~dario.dellamonica/teaching/corso_BDlab_18/slid… · Etichettare gli assi (includendo le unità di misura) 2. Aggiungere un titolo](https://reader033.vdocuments.pub/reader033/viewer/2022050409/5f867eae453cae1cc629d3da/html5/thumbnails/9.jpg)
Limiti numerici degli assi
Parametri xlim (asse orizzontale) e ylim (asse verticale)
plot(x, y, main = "Distribuzione congiunta di due variabili normali", xlab = "Variabile uno (unità di misura)"
ylab = "Variabile due (unità di misura)", xlim = c(-6, 6), ylim = c(-5,
5))
9/25
![Page 10: Corso di Bioinformatica - Uniudusers.dimi.uniud.it/~dario.dellamonica/teaching/corso_BDlab_18/slid… · Etichettare gli assi (includendo le unità di misura) 2. Aggiungere un titolo](https://reader033.vdocuments.pub/reader033/viewer/2022050409/5f867eae453cae1cc629d3da/html5/thumbnails/10.jpg)
Orientamento delle etichette degli assi
Parametro las: 0 = parallele all'asse, 1 = orizzontali, 2 = perpendicolari all'asse, 3 = verticali
plot(x, y, main = "Distribuzione congiunta di due variabili normali", xlab = "Variabile uno (unità di misura)"
ylab = "Variabile due (unità di misura)", xlim = c(-6, 6), ylim = c(-5,
5), las = 1)
10/25
![Page 11: Corso di Bioinformatica - Uniudusers.dimi.uniud.it/~dario.dellamonica/teaching/corso_BDlab_18/slid… · Etichettare gli assi (includendo le unità di misura) 2. Aggiungere un titolo](https://reader033.vdocuments.pub/reader033/viewer/2022050409/5f867eae453cae1cc629d3da/html5/thumbnails/11.jpg)
Tipo di punto
Parametro pch
plot(x, y, main = "Distribuzione congiunta di due variabili normali", xlab = "Variabile uno (unità di misura)"
ylab = "Variabile due (unità di misura)", xlim = c(-6, 6), ylim = c(-5,
5), las = 1, pch = 19)
11/25
![Page 12: Corso di Bioinformatica - Uniudusers.dimi.uniud.it/~dario.dellamonica/teaching/corso_BDlab_18/slid… · Etichettare gli assi (includendo le unità di misura) 2. Aggiungere un titolo](https://reader033.vdocuments.pub/reader033/viewer/2022050409/5f867eae453cae1cc629d3da/html5/thumbnails/12.jpg)
Simboli per i punti
12/25
![Page 13: Corso di Bioinformatica - Uniudusers.dimi.uniud.it/~dario.dellamonica/teaching/corso_BDlab_18/slid… · Etichettare gli assi (includendo le unità di misura) 2. Aggiungere un titolo](https://reader033.vdocuments.pub/reader033/viewer/2022050409/5f867eae453cae1cc629d3da/html5/thumbnails/13.jpg)
Dimensione dei punti
Parametro cex: specifica il fattore di scala dei punti (valore predefinito: 1)
plot(x, y, main = "Distribuzione congiunta di due variabili normali", xlab = "Variabile uno (unità di misura)"
ylab = "Variabile due (unità di misura)", xlim = c(-6, 6), ylim = c(-5,
5), las = 1, pch = 19, cex = 0.7)
13/25
![Page 14: Corso di Bioinformatica - Uniudusers.dimi.uniud.it/~dario.dellamonica/teaching/corso_BDlab_18/slid… · Etichettare gli assi (includendo le unità di misura) 2. Aggiungere un titolo](https://reader033.vdocuments.pub/reader033/viewer/2022050409/5f867eae453cae1cc629d3da/html5/thumbnails/14.jpg)
Dimensione del testo
Parametri cex.axis (etichette degli assi), cex.lab (nomi degli assi), cex.main (titolo)
plot(x, y, main = "Distribuzione congiunta di due variabili normali", xlab = "Variabile uno (unità di misura)"
ylab = "Variabile due (unità di misura)", xlim = c(-6, 6), ylim = c(-5,
5), las = 1, pch = 19, cex = 0.7, cex.main = 1.4, cex.axis = 1.2, cex.lab = 1.2)
14/25
![Page 15: Corso di Bioinformatica - Uniudusers.dimi.uniud.it/~dario.dellamonica/teaching/corso_BDlab_18/slid… · Etichettare gli assi (includendo le unità di misura) 2. Aggiungere un titolo](https://reader033.vdocuments.pub/reader033/viewer/2022050409/5f867eae453cae1cc629d3da/html5/thumbnails/15.jpg)
Tipo di bordo
Parametro bty: valori ammissibili sono "l", "7", "c", "u", "]", "n" (nessun bordo)
plot(x, y, main = "Distribuzione congiunta di due variabili normali", xlab = "Variabile uno (unità di misura)"
ylab = "Variabile due (unità di misura)", xlim = c(-6, 6), ylim = c(-5,
5), las = 1, pch = 19, cex = 0.7, cex.main = 1.4, cex.axis = 1.2, cex.lab = 1.2,
bty = "n")
15/25
![Page 16: Corso di Bioinformatica - Uniudusers.dimi.uniud.it/~dario.dellamonica/teaching/corso_BDlab_18/slid… · Etichettare gli assi (includendo le unità di misura) 2. Aggiungere un titolo](https://reader033.vdocuments.pub/reader033/viewer/2022050409/5f867eae453cae1cc629d3da/html5/thumbnails/16.jpg)
Colore
Parametri col (punti), col.axis (etichette degli assi), col.lab (nomi degli assi), col.main(titolo)
grigio <- rgb(red = 0.3, green = 0.3, blue = 0.3)
plot(x, y, main = "Distribuzione congiunta di due variabili normali", xlab = "Variabile uno (unità di misura)"
ylab = "Variabile due (unità di misura)", xlim = c(-6, 6), ylim = c(-5,
5), las = 1, pch = 19, cex = 0.7, cex.main = 1.4, cex.axis = 1.2, cex.lab = 1.2,
bty = "n", col = "blue", col.lab = grigio, col.main = grigio, col.axis = grigio)
16/25
![Page 17: Corso di Bioinformatica - Uniudusers.dimi.uniud.it/~dario.dellamonica/teaching/corso_BDlab_18/slid… · Etichettare gli assi (includendo le unità di misura) 2. Aggiungere un titolo](https://reader033.vdocuments.pub/reader033/viewer/2022050409/5f867eae453cae1cc629d3da/html5/thumbnails/17.jpg)
Trasparenza
blu_trasp <- rgb(red = 0, green = 0, blue = 0.5, alpha = 0.05)
grigio <- rgb(red = 0.3, green = 0.3, blue = 0.3)
plot(x, y, main = "Distribuzione congiunta di due variabili normali", xlab = "Variabile uno (unità di misura)"
ylab = "Variabile due (unità di misura)", xlim = c(-6, 6), ylim = c(-5,
5), las = 1, pch = 19, cex = 0.7, cex.main = 1.4, cex.axis = 1.2, cex.lab = 1.2,
bty = "n", col = blu_trasp, col.lab = grigio, col.main = grigio, col.axis = grigio)
17/25
![Page 18: Corso di Bioinformatica - Uniudusers.dimi.uniud.it/~dario.dellamonica/teaching/corso_BDlab_18/slid… · Etichettare gli assi (includendo le unità di misura) 2. Aggiungere un titolo](https://reader033.vdocuments.pub/reader033/viewer/2022050409/5f867eae453cae1cc629d3da/html5/thumbnails/18.jpg)
Il grafico precedente contiene molti punti sovrapposti. È perciò conveniente disegnare soloun campione casuale dell'intero data set. Estraete un campione di 1000 punti e disegnate loscatterplot corrispondente. Qual è il comando corretto?
plot(sample(x, 1000), sample(y, 1000), …)
indici = sample(1:10000, 1000); plot(x[indici], y[indici], …)
Submit Show Hint Show Answer Clear
18/25
![Page 19: Corso di Bioinformatica - Uniudusers.dimi.uniud.it/~dario.dellamonica/teaching/corso_BDlab_18/slid… · Etichettare gli assi (includendo le unità di misura) 2. Aggiungere un titolo](https://reader033.vdocuments.pub/reader033/viewer/2022050409/5f867eae453cae1cc629d3da/html5/thumbnails/19.jpg)
Grafico finale
19/25
![Page 20: Corso di Bioinformatica - Uniudusers.dimi.uniud.it/~dario.dellamonica/teaching/corso_BDlab_18/slid… · Etichettare gli assi (includendo le unità di misura) 2. Aggiungere un titolo](https://reader033.vdocuments.pub/reader033/viewer/2022050409/5f867eae453cae1cc629d3da/html5/thumbnails/20.jpg)
Sovrapporre linee a un grafico
Funzioni abline() (linee rette), lines() (segmenti connessi)
lty: tipo di linea (1 = continua, 2 = tratteggiata, 3 = punteggiata, …)
lwd: spessore della linea (valore predefinito: 1, dev'essere )
·
·
· ≥ 1
plot(x, y)
abline(mean(x), 0, col = "red", lty = 2, lwd = 3) # abline(intercetta, coeff. angolare)
abline(v = mean(y), col = "red", lty = 3, lwd = 2) # linea verticale
lines(c(-3, 2, 1.5), c(-2, 1, 3), col = "blue", lty = 1, lwd = 4) # Segmenti
20/25
![Page 21: Corso di Bioinformatica - Uniudusers.dimi.uniud.it/~dario.dellamonica/teaching/corso_BDlab_18/slid… · Etichettare gli assi (includendo le unità di misura) 2. Aggiungere un titolo](https://reader033.vdocuments.pub/reader033/viewer/2022050409/5f867eae453cae1cc629d3da/html5/thumbnails/21.jpg)
Aggiungere una legenda
La funzione legend() aggiunge una legenda a un grafico
La posizione della legenda può essere "topleft", "topright", "bottomleft","bottomright" o una coppia di coordinate x,y
Il parametro legend consente di specificare un vettore di descrizioni per le etichette dellalegenda
Il parametro fill specifica, nell'ordine, i colori di ciascuna etichetta nella legenda
I colori devono coincidere con quelli usati nel grafico (R non li sceglie automaticamente)!
·
·
·
·
·
data(VADeaths)
colori <- terrain.colors(5) # Genera 5 colori
barplot(VADeaths, beside = TRUE, col = colori)
legend("topright", legend = row.names(VADeaths), fill = colori)
21/25
![Page 22: Corso di Bioinformatica - Uniudusers.dimi.uniud.it/~dario.dellamonica/teaching/corso_BDlab_18/slid… · Etichettare gli assi (includendo le unità di misura) 2. Aggiungere un titolo](https://reader033.vdocuments.pub/reader033/viewer/2022050409/5f867eae453cae1cc629d3da/html5/thumbnails/22.jpg)
Aggiungere una legenda
data(VADeaths)
colori <- terrain.colors(5) # Genera 5 colori
barplot(VADeaths, beside = TRUE, col = colori, ylim = c(0, 80))
legend("topright", legend = row.names(VADeaths), fill = colori, bty = "n", cex = 0.9)
22/25
![Page 23: Corso di Bioinformatica - Uniudusers.dimi.uniud.it/~dario.dellamonica/teaching/corso_BDlab_18/slid… · Etichettare gli assi (includendo le unità di misura) 2. Aggiungere un titolo](https://reader033.vdocuments.pub/reader033/viewer/2022050409/5f867eae453cae1cc629d3da/html5/thumbnails/23.jpg)
Colori
Le palette di colori di base di R non sono un granché…
È facile tuttavia creare i propri vettori di colori
Adobe Kuler (https://kuler.adobe.com/create/color-wheel/)
·
·
·
colori <- c(rgb(255, 212, 98, max = 255), rgb(252, 125, 73, max = 255), rgb(207,
66, 60, max = 255), rgb(122, 22, 49, max = 255), rgb(63, 11, 27, max = 255))
23/25
![Page 24: Corso di Bioinformatica - Uniudusers.dimi.uniud.it/~dario.dellamonica/teaching/corso_BDlab_18/slid… · Etichettare gli assi (includendo le unità di misura) 2. Aggiungere un titolo](https://reader033.vdocuments.pub/reader033/viewer/2022050409/5f867eae453cae1cc629d3da/html5/thumbnails/24.jpg)
Altre funzioni utili per disegnare grafici
points(): simile a lines(), ma per aggiungere punti
text(): testo arbitrario in una specificata posizione
mtext(): testo arbitrario sui margini del grafico
axis(): manipolazione fine degli assi
…
·
·
·
·
·
24/25
![Page 25: Corso di Bioinformatica - Uniudusers.dimi.uniud.it/~dario.dellamonica/teaching/corso_BDlab_18/slid… · Etichettare gli assi (includendo le unità di misura) 2. Aggiungere un titolo](https://reader033.vdocuments.pub/reader033/viewer/2022050409/5f867eae453cae1cc629d3da/html5/thumbnails/25.jpg)
Salvare un grafico
png(file = "nome_grafico.png")
# Qui vanno scritti i comandi per disegnare il grafico
dev.off() # Salva il grafico su disco
set.seed(1482)
x <- rnorm(10000)
y <- rnorm(10000)
blu_trasp <- rgb(red = 0, green = 0, blue = 0.5, alpha = 0.1)
indici = sample(1:10000, 6000)
png(file = "bivariata_normale.png")
plot(x[indici], y[indici], main = "Distribuzione congiunta di due variabili normali",
xlab = "Variabile uno (unità di misura)", ylab = "Variabile due (unità di misura)",
las = 1, xlim = c(-4, 4), ylim = c(-4, 4), pch = 19, cex = 0.7, cex.main = 1.6,
cex.axis = 1.4, cex.lab = 1.4, bty = "n", col = blu_trasp)
dev.off()
25/25