R Language
Tracciamento di base
Ricerca…
Parametri
Parametro | Dettagli |
---|---|
x | variabile dell'asse x. Può fornire data$variablex o data[,x] |
y | variabile dell'asse y. Può fornire data$variabley o data[,y] |
main | Titolo principale della trama |
sub | Sottotitolo opzionale di trama |
xlab | Etichetta per l'asse x |
ylab | Etichetta per l'asse y |
pch | Numero intero o carattere che indica il simbolo di tracciamento |
col | Intero o stringa che indica il colore |
type | Tipo di trama "p" per i punti, "l" per le linee, "b" per entrambi, "c" per la parte delle righe sola di "b" , "o" per entrambe le "sovrapposte", "h" per "come un istogramma" ( o "alta densità") linee verticali, "s" per gradini, "S" per altri passi, "n" per non tracciare |
Osservazioni
Le voci elencate nella sezione "Parametri" sono una piccola parte di parametri possibili che possono essere modificati o impostati dalla funzione par
. Vedi il par
per una lista più completa. Inoltre, tutti i dispositivi grafici, inclusi i dispositivi grafici interattivi specifici del sistema, avranno una serie di parametri che possono personalizzare l'output.
Trama di base
Una trama di base viene creata chiamando plot()
. Qui usiamo il frame dei dati delle cars
incorporato che contiene la velocità delle auto e le distanze prese per fermarsi negli anni '20. (Per saperne di più sul set di dati, utilizzare l'aiuto (auto)).
plot(x = cars$speed, y = cars$dist, pch = 1, col = 1,
main = "Distance vs Speed of Cars",
xlab = "Speed", ylab = "Distance")
Possiamo usare molte altre varianti nel codice per ottenere lo stesso risultato. Possiamo anche modificare i parametri per ottenere risultati diversi.
with(cars, plot(dist~speed, pch = 2, col = 3,
main = "Distance to stop vs Speed of Cars",
xlab = "Speed", ylab = "Distance"))
Ulteriori caratteristiche possono essere aggiunte a questo grafico chiamando points()
, text()
, mtext()
, lines()
, grid()
, ecc.
plot(dist~speed, pch = "*", col = "magenta", data=cars,
main = "Distance to stop vs Speed of Cars",
xlab = "Speed", ylab = "Distance")
mtext("In the 1920s.")
grid(,col="lightblue")
Matplot
matplot
è utile per tracciare rapidamente più serie di osservazioni dallo stesso oggetto, in particolare da una matrice, sullo stesso grafico.
Ecco un esempio di una matrice contenente quattro serie di estrazioni casuali, ciascuna con una media diversa.
xmat <- cbind(rnorm(100, -3), rnorm(100, -1), rnorm(100, 1), rnorm(100, 3))
head(xmat)
# [,1] [,2] [,3] [,4]
# [1,] -3.072793 -2.53111494 0.6168063 3.780465
# [2,] -3.702545 -1.42789347 -0.2197196 2.478416
# [3,] -2.890698 -1.88476126 1.9586467 5.268474
# [4,] -3.431133 -2.02626870 1.1153643 3.170689
# [5,] -4.532925 0.02164187 0.9783948 3.162121
# [6,] -2.169391 -1.42699116 0.3214854 4.480305
Un modo per tracciare tutte queste osservazioni sullo stesso grafico consiste nel fare una chiamata di plot
seguita da altre tre chiamate di points
o lines
.
plot(xmat[,1], type = 'l')
lines(xmat[,2], col = 'red')
lines(xmat[,3], col = 'green')
lines(xmat[,4], col = 'blue')
Tuttavia, questo è sia noioso, e causa problemi perché, tra le altre cose, per impostazione predefinita i limiti dell'asse sono fissati dal plot
per adattarsi solo alla prima colonna.
Molto più conveniente in questa situazione è l'uso della funzione matplot
, che richiede solo una chiamata e si occupa automaticamente dei limiti dell'asse e modifica l'estetica di ogni colonna per renderli distinguibili.
matplot(xmat, type = 'l')
Si noti che, per impostazione predefinita, matplot
varia sia per il colore ( col
) che per il tipo di linea ( lty
) poiché ciò aumenta il numero di combinazioni possibili prima che vengano ripetute. Tuttavia, qualsiasi (o entrambe) di queste estetiche può essere fissata a un singolo valore ...
matplot(xmat, type = 'l', col = 'black')
... o un vettore personalizzato (che ricicla al numero di colonne, seguendo le regole di riciclaggio del vettore R standard).
matplot(xmat, type = 'l', col = c('red', 'green', 'blue', 'orange'))
I parametri grafici standard, incluso main
, xlab
, xmin
, funzionano esattamente allo stesso modo del plot
. Per di più su quelli, vedi ?par
.
Come la plot
, se viene dato un solo oggetto, matplot
assume che sia la variabile y
e usa gli indici per x
. Tuttavia, x
ed y
può essere specificato esplicitamente.
matplot(x = seq(0, 10, length.out = 100), y = xmat, type='l')
Infatti, sia x
che y
possono essere matrici.
xes <- cbind(seq(0, 10, length.out = 100),
seq(2.5, 12.5, length.out = 100),
seq(5, 15, length.out = 100),
seq(7.5, 17.5, length.out = 100))
matplot(x = xes, y = xmat, type = 'l')
Gli istogrammi
Gli istogrammi consentono uno pseudo-plot della distribuzione sottostante dei dati.
hist(ldeaths)
hist(ldeaths, breaks = 20, freq = F, col = 3)
Combinazione di trame
È spesso utile combinare più tipi di grafico in un grafico (ad esempio un Barplot accanto a un grafico a dispersione). R semplifica questo compito con l'aiuto delle funzioni par()
e layout()
.
par()
par
usa gli argomenti mfrow
o mfcol
per creare una matrice di nrows e ncols c(nrows, ncols)
che servirà da griglia per i tuoi grafici. L'esempio seguente mostra come combinare quattro grafici in un grafico:
par(mfrow=c(2,2))
plot(cars, main="Speed vs. Distance")
hist(cars$speed, main="Histogram of Speed")
boxplot(cars$dist, main="Boxplot of Distance")
boxplot(cars$speed, main="Boxplot of Speed")
layout()
Il layout()
è più flessibile e consente di specificare la posizione e l'estensione di ciascun grafico all'interno del grafico combinato finale. Questa funzione si aspetta un oggetto matrix come input:
layout(matrix(c(1,1,2,3), 2,2, byrow=T))
hist(cars$speed, main="Histogram of Speed")
boxplot(cars$dist, main="Boxplot of Distance")
boxplot(cars$speed, main="Boxplot of Speed")
Trama di densità
Un follow up molto utile e logico per gli istogrammi sarebbe quello di tracciare la funzione di densità livellata di una variabile casuale. Una trama di base prodotta dal comando
plot(density(rnorm(100)),main="Normal density",xlab="x")
sarebbe simile
Puoi sovrapporre un istogramma e una curva di densità con
x=rnorm(100)
hist(x,prob=TRUE,main="Normal density + histogram")
lines(density(x),lty="dotted",col="red")
che dà
Empirical Cumulative Distribution Function
Un follow up molto utile e logico per gli istogrammi e i grafici di densità sarebbe la funzione di distribuzione cumulativa empirica. Possiamo usare la funzione ecdf()
per questo scopo. Una trama di base prodotta dal comando
plot(ecdf(rnorm(100)),main="Cumulative distribution",xlab="x")
Iniziare con R_Plots
- dispersione
Hai due vettori e vuoi disegnarli.
x_values <- rnorm(n = 20 , mean = 5 , sd = 8) #20 values generated from Normal(5,8)
y_values <- rbeta(n = 20 , shape1 = 500 , shape2 = 10) #20 values generated from Beta(500,10)
Se si desidera creare un y_values
che abbia i y_values
nell'asse verticale e i x_values
nell'asse orizzontale, è possibile utilizzare i seguenti comandi:
plot(x = x_values, y = y_values, type = "p") #standard scatter-plot
plot(x = x_values, y = y_values, type = "l") # plot with lines
plot(x = x_values, y = y_values, type = "n") # empty plot
È possibile digitare ?plot()
nella console per leggere ulteriori opzioni.
- boxplot
Hai alcune variabili e vuoi esaminare le loro distribuzioni
#boxplot is an easy way to see if we have some outliers in the data.
z<- rbeta(20 , 500 , 10) #generating values from beta distribution
z[c(19 , 20)] <- c(0.97 , 1.05) # replace the two last values with outliers
boxplot(z) # the two points are the outliers of variable z.
- Gli istogrammi
Un modo semplice per disegnare gli istogrammi
hist(x = x_values) # Histogram for x vector
hist(x = x_values, breaks = 3) #use breaks to set the numbers of bars you want
- Grafici a torta
Se vuoi visualizzare le frequenze di una variabile, basta disegnare una torta
Per prima cosa dobbiamo generare dati con frequenze, ad esempio:
P <- c(rep('A' , 3) , rep('B' , 10) , rep('C' , 7) )
t <- table(P) # this is a frequency matrix of variable P
pie(t) # And this is a visual version of the matrix above