- Fiat Grande Punto 1.4 Emotion Pack
- Lamborghini Gallardo Spyder Base
- Mercedes Benz SLK Class SLK 350
I parametri che andremo a confrontare invece sono:
- Kilometri per litro (Mileage)
- Capacità del serbatoio (FuelTank)
- Velocità massima (MaxSpeed)
- Cilindrata (Displacement)
- Potenza in cavalli (PowerPS)
Per ottenere il diamond plot che cerchiamo, installiamo e carichiamo la libreria
plotrix
. Qui sono disponibili due funzioni tra loro simili, sebbene richiedano due diverse sintassi. Cominciamo a studiare la funzione radial.plot()
.Prima di procedere, però dobbiamo standardizzare i dati. La standardizzazione si rende necessaria dal momento che i valori coprono un range troppo elevato per poter essere visualizzato in un unico grafico (da circa 5 a circa 5000, la rappresentazione grafica sarebbe quasi illeggibile). Perciò dobbiamo standardizzare i dati, e utilizzeremo la funzione
decostand
della libreria vegan
. Per prima cosa creiamo una matrice con i dati:
Mileage <- c(11.8, 5.4, 7)
FuelTank <- c(45, 90, 70)
MaxSpeed <- c(180, 315, 252)
Displacement <- c(1368, 4961, 3498)
PowerPS <- c(90, 520, 275.8)
dati1 <- matrix(c(Mileage, FuelTank, MaxSpeed, Displacement, PowerPS), nrow=3)
dati1
[,1] [,2] [,3] [,4] [,5]
[1,] 11.8 45 180 1368 90.0
[2,] 5.4 90 315 4961 520.0
[3,] 7.0 70 252 3498 275.8
A questo punto carichiamo la libreria
vegan
, e utilizziamo la funzione decostand
. Leggendo l'help relativo (help(decostand)
), osserviamo che sono a disposizione numerosi metodi di standardizzazione. In questo caso ho scelto di utilizzare il metodo "max"
: per ogni variabile, il valore più alto viene rapportato ad 1, e gli altri vengono calcolati con una semplice proporzione; dobbiamo specificare MARGIN=2
, in modo tale che vengano standardizzati tra loro i valori di ogni colonna (scegliendo MARGIN=1
avrebbe standardizzato tra loro i valori di ogni riga):
library(vegan)
dati1ST <- decostand(dati1, "max", MARGIN=2)
dati1ST
[,1] [,2] [,3] [,4] [,5]
[1,] 1.0000000 0.5000000 0.5714286 0.2757509 0.1730769
[2,] 0.4576271 1.0000000 1.0000000 1.0000000 1.0000000
[3,] 0.5932203 0.7777778 0.8000000 0.7050998 0.5303846
attr(,"decostand")
[1] "max"
Con la matrice così costruita, possiamo utilizzare la funzione
radial.plot()
:
radial.plot(dati1ST,labels=c("Mileage", "FuelTank", "MaxSpeed", "Displacement", "PowerPS") ,rp.type="p", main="Diamond plot auto",line.col=2:4,show.grid=FALSE,lwd=1:3, radial.lim=c(0,1.2))
Prima di osservare il risultato, analizziamo la sintassi:
-
dati1ST
: specificare il nome della matrice contenente i dati; la matrice deve essere organizzata in modo che le variabili considerate (kilometraggio, capacità, etc.) siamo disposte in colonne;-
labels
: elenco dei nomi delle variabili, che verrano sistemati sul grafico-
rp.type="p"
: specifica di disegnare le linee che congiungono i vari punti-
main
: titolo della finestra-
line.col
: colori da utilizzare-
show.grid=F
: non mostra la griglia-
lwd
: spessore delle linee-
radial.lim
: range di valori, in questo caso da 0 a 1.2 (essendo il nostro valore massimo pari a 1)Ecco il risultato (eventualmente si può aggiungere una legenda):
L'altra funzione a disposizione per i grafici a diamante, è la funzione
diamondplot()
. La sintassi è leggermente diversa: innanzitutto i dati devono essere scritti sottoforma di dataframe, e non di matrice come sopra. Inoltre le colonne sono rappresentate dagli oggetti in studio, e non dalle variabili come per la funzione precedente. Fatte queste precisazioni, ecco il codice che ho utilizzato per ottenere un grafico molto simile al precedente:
Mileage <- c(11.8, 5.4, 7)
FuelTank <- c(45, 90, 70)
MaxSpeed <- c(180, 315, 252)
Displacement <- c(1368, 4961, 3498)
PowerPS <- c(90, 520, 275.8)
dati2 <- matrix(c(Mileage, FuelTank, MaxSpeed, Displacement, PowerPS), ncol=3, byrow=T)
dati2
[,1] [,2] [,3]
[1,] 11.8 5.4 7.0
[2,] 45.0 90.0 70.0
[3,] 180.0 315.0 252.0
[4,] 1368.0 4961.0 3498.0
[5,] 90.0 520.0 275.8
library(vegan)
dati2ST <- decostand(dati2, "max", MARGIN=1)
dati2ST
[,1] [,2] [,3]
[1,] 1.0000000 0.4576271 0.5932203
[2,] 0.5000000 1.0000000 0.7777778
[3,] 0.5714286 1.0000000 0.8000000
[4,] 0.2757509 1.0000000 0.7050998
[5,] 0.1730769 1.0000000 0.5303846
attr(,"decostand")
[1] "max"
dati2DF <- as.data.frame(dati2ST)
colnames(dati2DF) <- c("Fiat", "Lamborghini", "Mercedes")
rownames(dati2DF) <- c("Mileage", "FuelTank", "MaxSpeed", "Displacement", "PowerPS")
dati2DF
Fiat Lamborghini Mercedes
Mileage 1.0000000 0.4576271 0.5932203
FuelTank 0.5000000 1.0000000 0.7777778
MaxSpeed 0.5714286 1.0000000 0.8000000
Displacement 0.2757509 1.0000000 0.7050998
PowerPS 0.1730769 1.0000000 0.5303846
library(plotrix)
diamondplot(dati2DF, bg=gray(0.6), col=cm.colors, name="Diamond plot auto")
h
RispondiElimina