Your SlideShare is downloading. ×
0
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
R Graphics
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

R Graphics

10,961

Published on

An introduction to R: graphics

An introduction to R: graphics

Published in: Technology
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
10,961
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
6
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. I2R Grafica in R
  • 2. L’ambiente Grafico
    • R e’ dotato di un sofisticato ambiente grafico per rappresentare i dati.
      • E’ possibile produrre velocemente grafici utili all’esplorazione dei dati
      • Si possono facilmente generare grafici di alto livello da inserire nelle pubblicazioni
    • Tuttavia…
      • Il controllo completo degli elementi grafici richiede spesso l’utilizzo di un elevato numero di parametri nelle funzioni.
      • Questo rende non facile il “controllo fine” dei grafici generati
  • 3. Finestra Grafica
    • La console di R viene usata per comunicare I risultati dei calcoli eseguiti ma non puo’ generare alcuna finestra grafica.
    • Quando lanciamo un comando grafico R genera per noi una finestra grafica automaticamente.
    • Possiamo aprire una finestra grafica vuota con i comandi:
      • Linux: x11()
      • Mac OS X: quartz() , x11()
      • Windows: windows()
    > x <- 1:100 > y <- 1:100 > plot (x,y)
  • 4. devices
    • R puo’ generare grafici in diversi formati
    • La lista dei formati disponibili puo’ essere ottenuta con il comando help: ?device
    • Display su finestra grafica
        • x11()
        • quartz()
        • windows()
    • postscript()
    • pdf() Adobe Portable Document Format
    • png()
    • jpeg()
    • wmf() Windows Metafile
  • 5. Generare Grafici su file
    • Generare grafici usando un device specifico:
    • > pdf(file=&quot;I2R.pdf&quot;,width=5,height=5)
    • > plot(x,y)
    • > dev.off()
    • null device
    • 1
    • >?pdf
    I2R.pdf
  • 6. Salvare il contenuto della finestra grafica
    • Nell’utilizzo quotidiano e’ forse preferibile:
      • Generare un grafico nella finestra grafica
      • Salvare/Stampare il contenuto della finestra grafica
      • Modifcare il file salvato con un altro programma
      • salvare il risultato
    > x <- rnorm(1000) > hist(x,main=&quot;I2R&quot;,xlab=&quot;&quot;,ylab=&quot;&quot;)
  • 7. Creazione di un Grafico
    • Le coordinate del grafico sono espresse nell’unita’ di misura usate all’interno della prima funzione grafica usata
    • Funzioni di Alto Livello
      • sono funzioni autosufficienti, che generano una nuova finestra grafica
    • Funzioni di Basso Livello
      • vengono usate per aggiungere elementi ad un grafico esistente
  • 8. Funzioni di alto livello Comandi per la grafica 3D image, contour, persp Grafici a “torta” pie B ox-and-whisker plot boxplot Grafici a “colonne” barplot Generazione di istogrammi hist Grafici per confrontare diverse distribuzioni qqnorm, qqplot La funzione più utilizzata: permette di generare diverse tipologie di grafici (per punti, linee, grafici a barre, etc) plot start.help() PACKAGES/graphics library(help=&quot;graphics&quot;) more info:
  • 9. plot()
    • E’ una funzione polimorfica che genera un grafico adeguato al tipo di dato
      • plot(x): se x è un vettore produce un grafico dei valori del vettore rispetto agli indici
      • plot(x,y) : se x e y sono vettori produce uno scatterplot di x verso y
      • plot(X): se X è una matrice a due colonne produce uno scatterplot di una colonna rispetto all’ altra
      • plot(f): se f è un fattore viene prodotto un barplot
      • plot(f,y): se f è un fattore ed y un vettore numerico, viene prodotto un boxplot di y per ogni livello di f
      • plot (df): se df è un dataframe, produce i grafici delle distribuzioni delle variabili contenute nel data frame.
      • plot(MyFunc): se MyFunc e’ una funzione produce un grafico della funzione
  • 10. plot(x) > x <- rnorm(1000) > plot(x)
  • 11. plot(x,y) Average Heights and Weights for American Women > data(women) > summary(women) height weight Min. :58.0 Min. :115.0 1st Qu.:61.5 1st Qu.:124.5 Median :65.0 Median :135.0 Mean :65.0 Mean :136.7 3rd Qu.:68.5 3rd Qu.:148.0 Max. :72.0 Max. :164.0 > plot(women$height,women$weight, + xlab=&quot;Height&quot;,ylab=&quot;Weight&quot;, + main=&quot;Average Heights and Weights for American Women&quot;, + type=&quot;b&quot;)
    • parametri usati
    • xlab = label asse x
    • ylab = label asse y
    • main = Titolo
    • type = tipo di “tratto”
  • 12. plot(X) > x <- 1:100 > y <- x^2 > m <- cbind(x,y) > plot(m)
  • 13. plot(f) > fact <- factor(rep(c(&quot;GGGACT&quot;,&quot;CCCGGT&quot;,&quot;GGTGGT&quot;),c(5,8,10))) Versione compatta Versione estesa > summary(fact) CCCGGT GGGACT GGTGGT 8 5 10 > class(fact) [1] &quot;factor&quot; > plot(fact) > seq <- c(&quot;GGGACT&quot;,&quot;CCCGGT&quot;,&quot;GGTGGT&quot;) > times <- c(5,8,10) > v1 <- rep(seq,times) > fact <- factor(v1)
  • 14. plot(f,y) > length(fact) [1] 23 > y <- rnorm(23) > cbind(fact,y) fact y [1,] 2 -0.384699247 [2,] 2 0.787114321 [3,] 2 -0.673250349 [4,] 2 -0.812762048 [5,] 2 0.103863277 [6,] 1 0.773316309 [7,] 1 1.702127982 [8,] 1 -0.725201109 [9,] 1 -1.127990472 [10,] 1 -0.792510586 [11,] 1 0.180637613 [12,] 1 -0.661579088 [13,] 1 -0.186712857 [14,] 3 1.956332425 [15,] 3 0.002924978 [16,] 3 0.139636871 [17,] 3 -1.293007897 [18,] 3 -0.631633961 [19,] 3 1.391216216 [20,] 3 -0.570057441 [21,] 3 0.370955534 [22,] 3 0.870275335 [23,] 3 1.193812723 plot(fact,y) 3° quartile 1° quartile mediana min max
  • 15. plot(data.frame) > data(iris) > summary(iris) Sepal.Length Sepal.Width Petal.Length Petal.Width Species Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100 setosa :50 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300 versicolor:50 Median :5.800 Median :3.000 Median :4.350 Median :1.300 virginica :50 Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199 3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800 Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500 > plot(iris, col=&quot;darkgreen&quot;)
  • 16.  
  • 17. plot(function) > MyFunc <- function(x) (sin(x)) > class(MyFunc) [1] &quot;function&quot; > plot(MyFunc,0,2*pi, + col=“darkred”) plot(funzione, x min , x max ) plot(MyFunc,0,2*pi, col=&quot;darkred&quot;, xlim=c(2*pi,0))
  • 18. Alcuni argomenti del comando plot() logical (TRUE/FALSE) string string string string vector: c(y1,y2) vector: c(x1,x2) 1-character string Etichetta asse delle y ylab Etichetta asse delle x xlab Se FALSE non disegna gli assi e il contorno del grafico axes Sottotitolo del grafico sub Titolo del grafico main Limiti di y (y1, y2) nel grafico. y1 > y2 inverte l’asse delle y ylim Limiti di x (x1, x2) nel grafico. x1 > x2 inverte l’asse delle x xlim tipo di grafico: punti, linee, ... type
  • 19. plot(..., type=“”) Type &quot;p&quot; for p oints &quot;l&quot; for l ines &quot;b&quot; for b oth &quot;c&quot; for the lines part alone of &quot;b” &quot;o&quot; for both o verplotted &quot;h&quot; for h istogram vertical lines &quot;s&quot; for stair s teps &quot;S&quot; for other s teps &quot;n&quot; for no plotting. more info: help(plot) type p type l type b type c
  • 20. plot(..., type=“”) Type &quot;p&quot; for p oints &quot;l&quot; for l ines &quot;b&quot; for b oth &quot;c&quot; for the lines part alone of &quot;b” &quot;o&quot; for both o verplotted &quot;h&quot; for h istogram vertical lines &quot;s&quot; for stair s teps &quot;S&quot; for other s teps &quot;n&quot; for no plotting. more info: help(plot) type o type h type s type S
  • 21. qqnorm e qqplot
    • Q-Q plots : test grafici molto utilizzati per conforntare un insieme di dati con una distribuzione normale Si calcola i quantili campionari dei dati a disposizione e si confrontano con i quantili di una distribuzione normale
      • qqnorm (x): produce un grafico quantile-quantile dei dati del vettore x rispetto ad una corrispondente distribuzione normale
      • qqplot (x,y): produce il grafico dei quantili dei dati del vettore x rispetto ai quantili dei dati del vettore y
      • qqline(x): Funzione di basso livello: aggiunge una linea che passa attraverso il primo e terzo quartile
    quantile = si chiama primo quantile quel valore Q1 tale per cui alla sua sinistra troviamo il 25% delle osservazioni > quantile(0:100) 0% 25% 50% 75% 100% 0 25 50 75 100
  • 22. qqnorm > x <- rnorm(100) > qqnorm(x) > qqline(x)
  • 23. qqplot > x <- rnorm(100) > y <- rchisq(100,df=1) > qqplot(x,y) Normal VS chi square distribution
  • 24. Funzioni di alto livello Comandi per la grafica 3D image, contour, persp Grafici a “torta” pie B ox-and-whisker plot boxplot Grafici a “colonne” barplot Generazione di istogrammi hist Grafici per confrontare diverse distribuzioni qqnorm, qqplot La funzione più utilizzata: permette di generare diverse tipologie di grafici (per punti, linee, grafici a barre, etc) plot
  • 25. hist
    • Gli istogrammi vengono usati per rappresentare distribuzioni di frequenza La funzione hist() genera istogrammi utlizzando un vettore numerico
      • R puo’ disegnare un istogramma utilizzando
        • Probability densities (~ frequenze relative): la somma delle aree dei rettangoli e’ pari a uno
        • Frequenze (frequenze assolute) : il grafico e’ una rappresentazione delle frequenze assolute
    • Nel generare un istogramma possiamo specificare il numero di breaks:
      • Possiamo specifichiamo esplicitamente i punti di break degli intervalli da utilizzare
      • Oppure specifichiamo un algoritmo da utilizzare per calcolare i breaks (Sturges, Scott or Freedman-Diaconis)
  • 26. Istogramma con frequenze assolute o relative > w <- rnorm(1000,mean=100,sd=10) > hist(w, col=&quot;grey&quot;) > w <- rnorm(1000,mean=100,sd=10) > hist(w, col=&quot;grey”,freq=F) FREQ: Defaults to TRUE if and only if breaks are equidistant (and probability is not specified).
  • 27. Istogramma: breaks > w <- rnorm(1000,mean=100,sd=10) > hist(w, col=&quot;grey&quot;, breaks=30, label=TRUE) label=TRUE
  • 28. Istogramma: breaks
    • vector breaks=c(60,70,100,120): vettore degli estremi di ogni intervallo
    • integer breaks=10: numero di classi
    • string breaks=“Scott”: indica l’algoritmo da utilizzare pr calcolare i breaks
    • function Una funzione usata per calcolare i breaks
    hist(w, col=&quot;grey&quot;, breaks=10, label=T, main=&quot;10 breaks&quot;) hist(w, col=&quot;grey&quot;, breaks=c(60,65,70,80,90,100,120,140), label=T, main=&quot;breaks: vettore&quot;) hist(w, col=&quot;grey&quot;, breaks=&quot;Scott&quot;, label=T, main=&quot;breaks: Scott&quot;) R considera 2,3 e 4 “suggerimenti”
  • 29. l’oggetto: hist
    • E’ possibile recuperare i valori calcolati dalla funzione hist (numero di classi, intervalli, frequenze):
    • h <- hist(w)
    • str(h) <-- STR: Display str ucture of an object
    • List of 7
    • $ breaks : num [1:16] 65 70 75 80 85 90 95 100 105 110 ...
    • $ counts : int [1:15] 1 7 20 44 92 147 222 176 146 80 ...
    • $ intensities: num [1:15] 0.0002 0.0014 0.0040 0.0088 0.0184 ...
    • $ density : num [1:15] 0.0002 0.0014 0.0040 0.0088 0.0184 ...
    • $ mids : num [1:15] 67.5 72.5 77.5 82.5 87.5 ...
    • $ xname : chr &quot;w&quot;
    • $ equidist : logi TRUE
    • - attr(*, &quot;class&quot;)= chr &quot;histogram”
    • h$count / sum(h$count) <-- FREQUENZE RELATIVE
    • [1] 0.001 0.007 0.020 0.044 0.092 0.147 0.222 0.176 0.146 0.080 0.046 0.007 0.010 0.001 0.001
  • 30. Stima della Densita’
    • La funzione density() delinea l’andamento della distribuzione dei dati una volta suddivisi in classi.
      • La densita’ di frequenza ci dice quanto sono “addensate” le nostre osservazioni in ogni intervallo:
        • d i = n i / a i
          • n = numero di osservazioni
          • a = ampiezza intervallo
        • Es: 1-10 e 10-15 sono due intervalli con lo stesso numero di osservazioni n=5 ma hanno ampiezze diverse:
          • densita’ di frequenza: 5/10 = 0.5 e 5/5 = 1
      • Possiamo usare la funzione density() e il comando grafico di basso livello lines() per aggiungere al nostro istogramma una curva che stimi la densita’ di frequenza in ogni classe
  • 31. Stima della Densita’
    • x <- rnorm(1000)
    • hist(x, freq=F, col=&quot;grey&quot;)
    • lines(density(x), col=&quot;darkred&quot;, lwd=2)
  • 32. Stima della Densita’: RUG
    • RUG e’ un comando di basso livello che aggiunge una rappresentazione monodimensionale dei dati (piccole linee verticali sull’asse corrispondente)
    • y <- rnorm(1000)
    • hist(y, col=“grey”)
    • rug(y)
  • 33. Stima della Densita’: RUG
    • Nel caso siano presenti un gran numero di dati di ugual valore, possiamo usareil comando jitter() per aggingere un piccolo spostamento casuale ai punti, migliorando la visibilita’:
    • x <- rep(c(100,110,120,130,140),c(10,20,30,20,10))
    • hist(x, col=“grey” , breaks=&quot;FD&quot;)
    • rug(jitter(x))
    rug(x) rug(jitter(x))
  • 34. barplot
    • Grafico “a barre” dei valori presenti in un vettore numerico o in una matrice (non calcola le frequenze, non e’ un istogramma)
    • x <- c(10,20,50,10)
    • barplot(x, col=c(&quot;red&quot;,&quot;green&quot;,&quot;blue&quot;,&quot;yellow&quot;), names.arg=c(&quot;A&quot;,&quot;B&quot;,&quot;C&quot;,&quot;D&quot;))
  • 35. barplot di matrici
    • BARPLOT di una MATRICE
    • VADeaths <-- DATASET di esempio presente in R
    • Rural Male Rural Female Urban Male Urban Female
    • 50-54 11.7 8.7 15.4 8.4
    • 55-59 18.1 11.7 24.3 13.6
    • 60-64 26.9 20.3 37.0 19.3
    • 65-69 41.0 30.9 54.6 35.1
    • 70-74 66.0 54.3 71.1 50.0
    • barplot(VADeaths, legend = rownames(VADeaths), col = c(&quot;lightblue&quot;, &quot;mistyrose&quot;, &quot;lightcyan&quot;,&quot;lavender&quot;, &quot;cornsilk&quot;))
  • 36. boxplot
    • > data(InsectSprays)
    • > summary(InsectSprays)
    • count spray
    • Min. : 0.00 A:12
    • 1st Qu.: 3.00 B:12
    • Median : 7.00 C:12
    • Mean : 9.50 D:12
    • 3rd Qu.:14.25 E:12
    • Max. :26.00 F:12
    • > head(InsectSprays)
    • count spray
    • 1 10 A
    • 2 7 A
    • 3 20 A
    • 4 14 A
    • 5 14 A
    • 6 12 A
    boxplot(formula, data=“data.frame”) > boxplot(count ~ spray, data = InsectSprays, col = rainbow(6)) rainbow crea un vettore di 6 colori contigui
  • 37. help(rainbow)
  • 38. PIE
    • ll diagramma a torta rappresenta le frequenze relative di una variabile come settori circolari di un cerchio.
    > fact <- factor(rep(c(&quot;GGGACT&quot;,&quot;CCCGGT&quot;,&quot;GGTGGT&quot;),c(5,8,10))) > table(fact) fact CCCGGT GGGACT GGTGGT 8 5 10 > pie(table(fact), col=rainbow(3))
  • 39. Funzioni di alto livello Comandi per la grafica 3D image, contour, persp Grafici a “torta” pie B ox-and-whisker plot boxplot Grafici a “colonne” barplot Generazione di istogrammi hist Grafici per confrontare diverse distribuzioni qqnorm, qqplot La funzione più utilizzata: permette di generare diverse tipologie di grafici (per punti, linee, grafici a barre, etc) plot
  • 40. un accenno alle funzioni di grafica 3D
    • image : permette di visualizzare grafici 3D, come immagini 2D, utilizzando diversi toni di colore per le altezze
    • persp : permette di visualizzare superfici wireframe o a faccette piene
    • contour : rappresenta una superficie 3D tramite curve di livello
    • Ognuna di queste funzioni è dotata di diversi parametri che permettono diverse modalità di visualizzazione (v. help)
  • 41. image (x,y,z) > data(volcano) > x <- 10*(1:nrow(volcano)) > y <- 10*(1:ncol(volcano)) > image(x, y, volcano, col = terrain.colors(100), axes = FALSE, main=&quot;Mappa topografica&quot;)
  • 42. persp > persp(x,y,volcano, theta=135, phi=30, col=&quot;green3&quot;, scale=F, ltheta=-120, shade=0.75, border=NA, box=F, main=&quot;Mappa 3D&quot;)
  • 43. contour > contour(x,y,volcano) > contour(x,y,volcano,add=TRUE)
  • 44. par() Set or Query Graphical Parameters
    • Con il comando PAR accediamo/modifichiamo i parametri grafici utilizzati
    • Le opzioni chiamate all’interno di una funzione grafica modificano esclusivamente il grafico generato:
      • Es: boxplot(x ~ y, col=“red” )
    • Il comando par() modifica le opzioni in modo permanente: i parametri influenzeranno tutti i grafici generati sino alla chiusura della finestra grafica
    • Un esempio di utilizzo di par: dividere la finestra grafica in sottofinestre.
      • par(mfrow(3,2))
    1 2 3 4 5 6
  • 45. par(mfrow=c(3,2))
  • 46. Comandi di basso livello
    • E’ possibile modificare un grafico generato con funzioni ad alto livello con funzioni di basso livello, che possono aggiungere ad es: punti, linee o testo ad un grafico esistente. Alcuni esempi (ma esistono molti altri comandi) sono:
    Le coordinate sono fornite in termini di coordinate utente , definite da precedenti comandi di alto livello Aggiunge gli assi nelle posizioni specificate da side axis (side,...) Aggiunge il titolo main ed opzionalmente un sottotitolo sub title (main.sub) Aggiunge una legenda in posizione x,y legend (x,y,legend) Disegna un poligono i cui vertici (ordinati) sono elencati come argomenti polygon (x,y,z, ...) Aggiunge una linea di inclinazione a ed intercetta b abline (a,b) Aggiunge la stringa di testo label in posizione x,y text (x,y,label) Aggiunge una linea al grafico corrente lines (x,y) Aggiunge un punto al grafico corrente (in posizione x,y) points (x,y)
  • 47. Esempi di comandi di basso livello
    • plot(1, 1, xlim=c(1, 7.5), ylim=c(0,5), type=&quot;n&quot;)
    • points(1:7, rep(4.5, 7), cex=1:7, col=1:7, pch=0:6)
    • text(1:7,rep(3.5, 7), labels=paste(0:6), cex=1:7, col=1:7)
    • points(1:7,rep(2,7), pch=(0:6)+7)
    • text((1:7)+0.25, rep(2,7), paste((0:6)+7))
    • points(1:7,rep(1,7), pch=(0:6)+14)
    • text((1:7)+0.25, rep(1,7),paste((0:6)+14))
    points 1-6 text points 7-13 points 14-20
  • 48. Produrre Grafici meravigliosi!
    • Spessore, colore e tipo di tratto
      • comando colors(): contiene la lista dei colori utilizzabili in R
      • opzione lwd : regola lo spessore del tratto
      • opzione lty :permette di variare il tratteggio di una linea
    • Titoli, sottotitoli e assi
      • opzione main : titolo del grafico
      • opzione sub : sottotitolo
      • opzione xlab, ylab : etichette assi
      • opzione axes : se FALSE non disegna gli assi (che possono essere disegnati in un secondo momento con il comando axis)
  • 49. Produrre Grafici meravigliosi!
    • Aggiungere testo e formule
      • comando text:
      • comando mtext :
      • comando abline :
    • legende
      • comando legend():
  • 50. comandi interattivi
    • locator
    • identify
  • 51. More ...
    • R graphic gallery: http: //addictedtor .free.fr/graphiques/
    • Rgl

×