Nella società attuale è importante riuscire a gestire e a presentare correttamente le informazioni. Non è più soltanto una questione legata a ricercatori e studenti universitari: grazie agli open data della pubblica amministrazione, per esempio, oggi chiunque è in grado di conoscere nei dettagli la situazione del mondo che lo circonda. Tuttavia, è inutile avere un immenso numero di informazioni se esse risultano troppo difficili da capire. Il metodo migliore per presentare dei dati è utilizzare dei grafici: il mondo del giornalismo, per esempio, si sta avvicinando sempre di più all’analisi statistica. E se si vogliono realizzare dei grafici professionali, magari analizzando anche i dati, la soluzione di qualità professionale è rappresentata dal linguaggio R . Ovviamente, utilizzare un linguaggio di programmazione non è facile, ma esistono ottime interfacce grafiche dotate di procedure guidate per svolgere buona parte delle operazioni di base. La migliore, più semplice e completa, in circolazione è certamente RKWard (multipiattaforma).
Per fare un esempio pratico, vedremo come realizzare un grafico a bolle interattivo, in formato SVG (supportato dai moderni browser Web). Si tratta di un tipo di grafico impossibile da realizzare con la quasi totalità degli altri strumenti a disposizione (Excel o Calc) di un utente, ma molto utile per presentare un gran numero di informazioni in modo intuitivo. Per il grafico ci si può rivolgere alla libreria ggplot2 , mentre per renderlo interattivo si utilizza Javascript , con un semplice codice che presenteremo.
RKWard si apre offrendo la possibilità di scegliere come cominciare a lavorare: l’opzione standard è ovviamente di cominciare con un workspace completamente vuoto, così si può procedere manualmente. Il programma memorizza anche le varie sessioni, così è più facile riprendere un lavoro già iniziato.
Non dimentichiamo che RKWard è soltanto un’interfaccia grafica: il vero motore è R. Quindi si deve sempre accedere alla R console . Se è la prima volta che si avvia R e si vuole lavorare con grafici speciali, sarà necessario installare le apposite librerie. Si può fare dando i comandi:
install.packages("ggplot2")
install.packages("gridSVG")
install.packages("rjson")
RKWard rende più semplice l’utilizzo di R, in particolare trasformando le varie domande a riga di comando in interfacce grafiche. Per esempio, quando si installa una libreria, RKWard offre una comoda finestra per selezionare il server da cui scaricare i file. Ovviamente, conviene sempre scegliere un server presente in Italia, perché la connessione è più veloce.
Il passo successivo, in un progetto, consiste nel caricare le librerie necessarie. Lo si può fare con questi comandi:
library(ggplot2)
require(gridSVG)
library(rjson)
Se R è un linguaggio per la gestione e l’analisi di informazioni, per cominciare è ovviamente necessario caricare i dati di partenza. Si possono inserire manualmente in una nuova tabella, prelevarli da un file o addirittura da un indirizzo Internet. Per esempio:
my.data <- read.csv("http://pastebin.com/raw/3KDjtLKP", header=TRUE, sep=",")
RKWard permette di vedere molto facilmente il contenuto della tabella: basta cliccare sul suo nome per far apparire un’apposita scheda. La tabella che abbiamo preso ad esempio è un estratto di Wikipedia che presenta le varie tipologie di virus emorragici. Ora è possibile accedere ai dati della tabella dalla console R. Se si vuole realizzare un grafico a bolle, ovviamente si deve calcolare il raggio di ogni bolla. E lo si può fare dando il comando:
radius <- sqrt( as.double(my.data$Mortalità.massima..indicativa.) / pi )
Per costruire il grafico si deve poi chiamare una particolare funzione. Ogni tipologia di grafico ne ha una, e sono ben descritte nel sito Web della libreria ggplot2 . Per il grafico a bolle, si può scrivere questo codice:
myg <- ggplot(my.data, aes(x=my.data$Famiglia.del.virus, y=my.data$Nome.del.virus, size=as.double(my.data$Mortalità.massima..indicativa.), colour=as.double(my.data$Mortalità.massima..indicativa.), label=as.double(my.data$Mortalità.massima..indicativa.)),guide=FALSE)+
geom_point( fill="black", alpha=0.8, guide="none") +
scale_size_area(breaks=c(9, 19, 39, 79, 100), "Mortalità media", max_size=20) +
scale_colour_gradient(low = "yellow", high = "red", breaks=c(9, 19, 39, 79), "Mortalità media") +
labs(x = "Famiglia del virus",
y = "Nome del virus",
title = "Mortalità dei virus di febbri emorragiche") +
geom_text(size=4, hjust=-(radius-(radius/3)^2)) +
scale_x_discrete(labels=levels(my.data$Famiglia.del.virus)) +
scale_y_discrete(labels=levels(my.data$Nome.del.virus)) +
theme_bw()
Il grafico è stato impostato: per disegnarlo basta dare il suo nome, deciso nel comando precedente. Cioè: myg
Per produrre il codice SVG del grafico occorre dare il comando di esportazione della griglia del grafico:
myg.svg <- grid.export("plot1.svg",addClasses=TRUE)
Il codice SVG può essere inserito in una pagina HTML utilizzando il comando cat . Il comando può essere scritto per aggiungere un tooltip con delle informazioni accessorie, un esempio si può trovare su seguente pagina . Comando che, ovviamente, termina con il nome del file HTML da salvare.
Visualizzando il file HTML con un browser qualsiasi si può vedere il risultato. Naturalmente, ci saranno ancora dei dettagli da correggere, per esempio la codifica dei caratteri speciali e le dimensioni. Se si avvicina il mouse a uno dei punti, si può notare che appare un semplice “tooltip”. Le caratteristiche di questo piccolo riquadro sono state indicate nel codice HTML, nella sezione script , proprio con l’oggetto var tooltip .
Aprendo il file HTML con un editor di testo, come l’ottimo Kate , si possono eseguire due semplici modifiche: aggiungere la riga
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
per abilitare le lettere con accento ed i simboli speciali (se necessario), e rendere le dimensioni relative e non assolute modificando la riga successiva nel seguente modo:
<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script> </head> <body> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 671 671.17" version="1.1">
Così facendo la pagina si adatterà, per quanto possibile, alle dimensioni della finestra del browser.
L’intero insieme di comandi presentati si può trovare al seguente link e il risultato dovrebbe essere questo .