Omaggio a Sabino

Keywords: #R #terminale #briand06

Chi è Sabino? Sabino Maggi è uno scienziato e con la puntigliosità dello scienziato si preoccupa anche di divulgare come sfruttare al meglio il Mac, con ottime incursioni sull’uso del terminale. Sul suo blog sono apparsi ultimamente due post su come calcolare lo spazio su disco. Il primo spiega il comando du e sue varianti1. Nel secondo2 è andato a scovare qualche strumento grafico per visualizzare i risultati di du.

Così mi è venuta la fantasia di provare a rappresentare i dati di occupazione del disco con il mio amato R. Il livello di sofisticazione non è molto alto, ma il risultato lo ritengo sufficiente per il momento. Ho scelto come tipo di rappresentazione treemap, usando ggplot2, Figure 1, e poi plotly, Figure 2, per dare un po’ di interattività. L’area occupata dai rettangoli è proporzionale alle dimensioni di file e directory.

dut <- fread(cmd = "du -d 2 -I '.*' /Users/mimmo/Nextcloud/esempi", col.names = c("dimensione", "nome"))
p <- ggplot(dut, aes(area = dimensione, fill = dimensione, label = nome)) +
  geom_treemap() +
  geom_treemap_text(colour = "white") +
  theme(legend.position = "none")

p

Figure 1: Visualizzazione dello spazio su disco con ggplot2 e treemapify

plot_ly(dut, parents = NA, values = ~ dimensione, labels = ~ nome, type = "treemap")
Figure 2: Visualizzazione con plotly

Vorrei spendere qualche riga per sottolineare come è facile con fread sfruttare l’opzione cmd per trasportare l’output di un comando shell in un data.frame, per poi elaborare ulteriormente i dati.

Tanto per fare un esempio.

dat <- fread(cmd = "ls -fl /Users/mimmo/Nextcloud/esempi", header = FALSE)
setorder(dat, -V5)
head(dat$V5) |> barplot()

Figure 3: Primi sei elementi per dimensione