Nello studio della relazione di funzione che lega tra loro tre variabili può essere utile la loro rappresentazione in un grafico tridimensionale (grafico 3D). Qui vediamo come sia possibile riportare i dati associando a ciascuno di essi una etichetta che ne consenta la immediata identificazione all'interno del grafico.
Come dati impieghiamo i valori di BMI (indice di massa corporea) rilevati a livello europeo alcuni anni fa e pubblicati dall'Istat [1].
Per proseguire è necessario:
→ effettuare il download del file di dati bmi.csv
→ salvare il file nella cartella C:\Rdati\
Nazione;sottopeso;normale;sovrappeso;obeso
Austria;2.4;49.6;33.3;14.7
Belgio;2.7;48.0;35.3;14.0
Bulgaria;2.2;43.8;39.2;14.8
Cipro;3.9;47.8;33.8;14.5
Croazia;1.9;40.7;38.7;18.7
Danimarca;2.2;50.0;32.9;14.9
Estonia;2.2;43.9;33.5;20.4
Finlandia;1.2;44.1;36.4;18.3
Francia;3.2;49.6;31.9;15.3
Germania;1.8;46.1;35.2;16.9
Grecia;1.9;41.3;39.4;17.3
Irlanda;1.9;42.3;37.0;18.7
Lettonia;1.7;41.8;35.2;21.3
Lituania;1.9;42.5;38.3;17.3
Lussemburgo;2.8;49.3;32.4;15.6
Malta;2.0;37.0;35.0;26.0
Olanda;1.6;49.0;36.0;13.3
Polonia;2.4;42.9;37.5;17.2
Portogallo;1.8;44.6;36.9;16.6
Regno Unito;2.1;42.2;35.6;20.1
Repubblica Ceca;1.1;42.1;37.6;19.3
Romania;1.3;42.9;46.4;9.4
Slovacchia;2.1;43.6;38.0;16.3
Slovenia;1.6;41.8;37.4;19.2
Spagna;2.2;45.4;35.7;16.7
Svezia;1.8;48.3;35.9;14.0
Ungheria;2.9;41.9;34.0;21.2
Inoltre dovete scaricare dal CRAN il pacchetto aggiuntivo rgl [2]. Copiate e incollate nella Console di R questo script, se necessario iconizzate la Console di R per visualizzare il grafico:
# GRAFICO 3D INTERATTIVO CHE PUO' ESSERE RUOTATO CON IL MOUSE
# accanto a ciascun punto viene riportata l'etichetta che lo identifica
#
library(rgl) # carica il pacchetto per la rappresentazione grafica 3D
data <- read.table("c:/Rdati/bmi.csv", header=TRUE, sep=";") # importa i dati
#
with(data, plot3d(normale, sovrappeso, obeso, type="p", col="red", size=6)) # genera il grafico 3d
with(data, text3d(normale, sovrappeso, obeso, Nazione, cex=0.8)) # identifica ciascun punto con una etichetta
#
Nelle due prime righe con library() viene caricato il pacchetto rgl e con read.table() i dati sono importati nell'oggetto data.
Quindi viene impiegata due volte la funzione with() che specifica i dati da impiegare (data) e la funzione da applicare. La prima volta con la funzione plot3d() viene realizzato il grafico 3D, la seconda volta con la funzione text3d() accanto a ciascun dato viene riportata la scritta/etichetta contenuta nella variabile Nazione.
Se avete dubbi sui valori che possono assumere gli argomenti type, col, size e cex potete come sempre trovare aiuto digitando help(nomedellafunzione) nella Console di R.
Il grafico 3D è interattivo. Infatti se “afferrate” il grafico risultante facendo click su di esso e tenendo premuto il tasto sinistro del mouse senza rilasciarlo, potete ruotare il grafico a vostro piacimento muovendo il mouse. In questo modo è stata realizzata – dopo avere ingrandito la finestra grafica a tutto schermo – l'immagine seguente che fornisce una delle tante possibili viste [della distribuzione] dei dati.
Se infine volete una animazione che presenti il grafico sotto le varie possibili angolazioni copiate e incollate nella Console di R quest'altra riga di codice, se necessario iconizzate la Console di R per visualizzare il grafico:
#
with(data, play3d(spin3d(axis=c(0,0,1), rpm=3), duration=60)) # fa ruotare il grafico per 60 secondi
#
Si impiega di nuovo la funzione with() che specifica i dati da impiegare (data) e la funzione da applicare, che questa volta è la funzione play3d(), all'interno della quale:
→ la funzione spin3d() fa ruotare il grafico attorno all'asse specificato da axis=c() alla velocità di 3 giri al minuto (rpm=3);
→ il successivo argomento stabilisce per l'animazione una durata di 60 secondi (duration=60).
----------
[1] Vedere il post Indice di massa corporea (BMI).
[2] Per la documentazione completa delle funzioni e dei rispettivi argomenti vedere il manuale di riferimento del pacchetto rgl sul repository della documentazione: Available CRAN Packages By Name. URL consultato il 10/11/2021: https://bit.ly/3zLwHWH
Nessun commento:
Posta un commento