Navigazione ed Interazione
Massimiliano Cianchettini
[email protected]
1. Zoom e Dettaglio
Zoom e dettaglio sono classici strumenti della visualizzazione indispensabili per l’esplorazione dei
grandi grafi.
Lo zoom è particolarmente adatto per grafi perché la grafica è di solito abbastanza semplice (linee e
semplici forme geometriche). Lo zoom può, nella maggior parte dei casi, essere realizzato
semplicemente tramite trasformazioni dello schermo e ridisegnando i contenuti di una rappresentazione
interna, piuttosto che zoomando nell'immagine sui pixel. In altre parole, non si verificano problemi di
aliasing. Il fenomeno dell'aliasing è dovuto al fatto che una immagine in formato raster (ovvero digitale
non vettoriale) viene rappresentata da una griglia di pixel, che, essendo quadrati, riescono a
rappresentare le linee oblique (o le curve) solo creando un effetto spezzettato. Ovviamente maggiore è
la risoluzione (quindi maggiore è il numero di pixel per unità di lunghezza) più piccoli sono i
quadrettini e di conseguenza meno visibile è la scalettatura.
Esistono due tipi di zoom. Zoom geometrico: esegue un ingrandimento del contenuto del grafo.
Zoom semantico: le informazioni contenenti cambi e maggiori dettagli vengono mostrate solo quando
ci avviciniamo ad una particolare area del grafico. Le difficoltà tecniche in questo caso non sono con
l’operazione di zoom, ma piuttosto nell’assegnare un adatto livello di dettaglio.
Anche se concettualmente semplice, zoom e dettaglio aumenta i problemi quando usato in
ambienti interattivi. Si consideri, per esempio, il setting seguente: il grafico è la rete delle strade
Europee, e l'utente ha zoomato nell'area
circostante Amsterdam. L'utente vuole
poi spostare la vista su Milano. Facendo
questo senza cambiare il fattore dello
zoom, almeno temporaneamente, diventa
troppo lento perché l'utente deve prima
zoomare in fuori, spostarsi su Milano, e
zoomare nuovamente. Inoltre, l'utente
vuole che il sistema faccia agevolmente
le mosse necessarie. Una semplice
implementazione potrebbe calcolare i
cambi necessari per il dettaglio e lo zoom
indipendentemente e compiere i cambi in
parallelo. Il problema è che quando
zoomiamo, la vista del mondo si
esdettagliode esponenzialmente, e il
nostro punto si muove troppo veloce
perché il dettaglio lo possa seguire. Il
risultato è che l’obiettivo è avvicinato
non-monotonically: prima si decentra a
causa dello zoom e solamente più tardi
ritorna al centro della vista.
Furnas[2] e Bederson presentano il concetto di diagrammi dello spazio-scala (veda Figura 1). Il
problema dello zoom e dettaglio non è ristretto solamente ai grafi, né lo è la soluzione elegante
proposta da Furnas e Bederson per alleviarlo. Ciononostante, sistemi di visualizzazione di grafi
possono grandemente trarre profitto dal loro approccio, così provvederemo a una breve descrizione.
L'idea di base è di definire uno spazio astratto “creando molte copie del disegno 2D originale, uno
per ogni possibile ingrandimento e accatastarli uno sull’altro per formare una piramide invertita”. I
punti nell’immagine originale possono essere rappresentati da raggi che contengono informazioni sul
punto ed il suo ingrandimento. Varie combinazioni di zoom ed azioni del dettaglio possono essere
descritti come percorsi in questo spazio, descrivendo la posizione centrale di una finestra parallela al
piano y. Un costo, o " lunghezza ", può essere associato ad ogni percorso e, se la lunghezza è scelta
con giudizio, un percorso minimo può rappresentare una combinazione ottimale di zoom e dettaglio.
Furnas e Bederson non solo danno una soluzione al problema; diagrammi della spazio-scala possono
essere anche uitilizzati per lo zoom semantico (invece di accatastare la stessa immagine nella piramide,
il contenuto del ritratto può dipendere dal livello dell'ingrandimento).
2. Tecniche di Focus+Context
Un problema noto con lo zoom è che se uno zooma su un fuoco, tutte le informazioni contestuali
sono perse. Tale perdita di contesto può divenire un ostacolo di utilizzabilità considerevole. Un set di
tecniche che permettono all'utente di concentrarsi sui dettagli senza perdere il contesto può alleviare
questo problema. Il termine focus+context è usato per descrivere queste tecniche, che non sostituiscono
zoom e dettaglio, ma piuttosto lo ampliano. La complessità dei dati fa dello zoom una assoluta
necessità. Comunque, focus+context sono una buona alternativa.
2.1 Distorsione di Fisheye
Le viste fisheye sono tecniche note per
focus+context. Le viste di Fisheye imitano il noto
fisheye effetto lente, allargando un'area di interesse e
mostrando le altre porzioni dell'immagine con
dettaglio sempre minore più ci allontaniamo dal
centro.
Descriviamo ora alcune delle tecniche
matematiche coinvolte nella tecnica del fisheye. Un
"punto del fuoco " è definito di solito dall'utente. La
distanza dal fuoco ad ogni nodo del grafo è distorta da
una funzione h(x), che dovrebbe essere concava,
progettando monotonicamente l’intervallo [0,1] sopra
[0,1] (veda Figura 3). La distorsione creata dalla vista
fisheye è la conseguenza della forma della funzione
che ha un incremento più veloce intorno a 0
(incidendo sui nodi intorno al fuoco), con un
incremento lento quando chiudiamo su 1. La definizione esatta della funzione può produrre un minore
o maggiore effetto di distorsione. Una semplice funzione di distorsione, per esempio, usata da Sarkar e
Brown è: h(x)=(d+1)/(d+1/x) (questa è la funzione disegnata in figura 3). Il fattore d è così definito
fattore di distorsione che può essere settato interattivamente dall'utente. Dovrebbe essere positivo; più
grande è, più forte sarà la distorsione del fisheye. Figura 2 mostra l'effetto di questa funzione (con d =
4) su una griglia regolare intorno all'origine.
Ci sono alcune variazioni a questo schema di base. La tecnica appena descritta è di solito nota
come distorsione " polare ", in quanto si applica radialmente ai nodi in tutte le direzioni che cominciano
dal punto del fuoco. Un'alternativa è usare un " cartesian " fisheye: la distorsione della distanza è
applicata indipendentemente su x ed y prima di stabilire la posizione finale del nodo (vedi di nuovo
Figura 4). Altre variazioni sono possibili. La scelta finale dovrebbe dipendere dallo stile del grafico per
essere esplorato così come l'algoritmo di
configurazione in uso.
Questa semplice ma potente tecnica è
un'importante forma di navigazione che
completa zoom e dettaglio. L’essenza di una
vista fisheye è distorcere la posizione di ogni
nodo. Se la distorsione è applicata fedelmente,
anche gli archi che connettono i nodi saranno
distorti. Matematicamente, il risultato di questa
distorsione è una curva generica. Sistemi grafici
standard (per es. X11, Java2D OpenGL) non
offrono i necessari strumenti per trasformare le
linee in queste curve facilmente (gli strumenti
possono essere piuttosto complessi). La scelta
dei progettisti è semplicemente di approssimare
gli intervalli di linea originali con un numero
alto di punti, trasformare questi punti, e
mostrare una polyline che approssimi l'ideale
curva trasformata. Il problema è che il numero di
punti
dell'approssimazione
deve
essere
relativamente alto per ottenere un buona qualità
dell’immagine(in media 60 punti per archi), il
che porta ad un proibitivo numero di calcoli e
riduce nettamente le prestazioni del sistema.
L'unica soluzione possibile è applicare la
distorsione del fisheye sul nodo singolo, e
connettere i nodi trasformati da un arco diretto.
La conseguenza di questa soluzione inesatta è la
presenza di incroci (veda, per esempio, il
quadrante di Figura 4/b in alto a sinistra). La
possibilità di esplorare i grandi grafi rapidamente
è talmente importante che questi punti di
intersezioni addizionali non interessano molto
realmente.
2.2 Viste Fisheye
Sarkar e Brown[3] estendono il concetto di vista Fisheye alla visualizzazione di grafi. Nello
schema originale di Furnas un nodo in un grafo poteva essere mostrato o no nella sua locazione
originale. Nell’approccio di Sarkar e Brown, invece, i nodi possono avere diverse dimensioni e, gli
archi allungati a seconda dell’importanza che assumono nel grafo. Essi generalizzano la funzione di
Furnas per i nodi introducendo un Visual Worth VW. Ogni nodo nel grafo può essere spostato dalla sua
posizione originale e la sua dimensione modificata per migliorare l’area interna al focus a discapito
dell’area esterna.
Fig 5. Un grafo non distorto.
Figura 5 mostra un grafo simmetrico non distorto
Per definire la posizione di ogni nodo nella vista Fisheye, introduciamo i seguenti formalismi:
1.
La posizione Pfisheye di un nodo può essere espressa come una funzione della posizione
normale del nodo (non-Fisheye) Pnorm e dela posizione normale del focus Pnorm Focus:
Pfisheye= F1 (Pnorm, Pnorm focus)
2.
La dimensione di un nodo nella vista Fisheye Sfisheye è una funzione della sua dimensione
normale Snorm e della sua posizione normale Pnorm, della sua priorità API (rappresenta la sua
importanza relativa al grafo originale nella sua interezza), e della posizione normale del focus Pnorm
focus:
Sfisheye = F2 (Snorm , Pnorm, Pnorm focus, API )
3.
La quantità di dettagli DTLfisheye che può essere visualizzata per un nodo dipende dalla
dimensione del nodo nella vista Fisheye Sfisheye e dalla massima quantità di dettaglia che possono
essere visulizzati DTLmaximum:
DTLfisheye = F3 (Sfisheye , DTLmaximum )
4.
Il visual worth VW di un nodo, dal quale dipende la visulizzazione o meno di un nodo, dipende
dalla distanza fra il nodo e il focus nelle coordinate normali Dnorm e dalla pridel nodo:
VW = F4 (Dnorm , API )
. Il grafo a sinistra in figura 6 mostra lo stesso sottoposto alla funzione F1; a destra viene
mostrato il grafo con l’aggiunta di una trasformazione sulla dimensione tramite la funzione F2.
Fig 6. Una vista fisheye usando la trasformazione cartesiana (sinistra) e usando una trasformazione
polare (destra) (d=4)
Per generare delle viste usabili, le funzioni F1, F2, F3, e F4 devono essere scelte
accuratamente. Sarkar e Brown presentano un protoitpo dove usano la seguente funzione F1 sul punto
di coordinate cartesiane P(x,y):
Dmax è la distanza dalla finestra al focus. La costante d è chiamata fattore di distorsione. Se
d=0 le coordinate normali e nella vista fisheye sono uguali.
3. Esplorazione incrementali e Navigazione
La dimensione dell’oggetto di visualizzazione è un problema notevole nella visualizzazione di
grandi grafi. Ci sono casi in cui la dimensione è così grande che diviene impossibile occuparsi di tutto
il grafo in ogni momento. Tecniche di esplorazione incrementali sono buoni candidati per tali
situazioni. Il sistema espone solamente una piccola porzione dell’intero grafo e le altre parti sono
visualizzate solo quando necessario. Il vantaggio di questo approccio è che, in ogni istante, il sottografo
mostrato sullo schermo può essere limitato nella dimensione. L'esplorazione incrementale vuole dire
che il sistema mette un finestra " visibile" sul grafico. L'esplorazione vuole dire trasportare questa
finestra lungo alcune traiettorie (veda Figura 20). L’implementazione di questa esplorazione
incrementale ha essenzialmente due aspetti, vale a dire:
1. decidere una strategia per generare nuovi
frame logici.
2. riposizionare il contenuto dei frame dopo
ogni modifica.
Generare nuovi frame è sotto il controllo dell'utente.
Il frame logico contiene semplicemente, in alcuni
casi, i nodi visitati finora. Huang(che perfezionò
anche uno strumento lungo le stesse linee per
esplorare il Mondo Web) anticipa l'interazione
dell'utente non solo aggiungendo un nodo nuovo a un
frame, ma anche i suoi adiacenti. North include un
controllo sulle parti del frame da eliminare, per
evitare la saturazione dello schermo.
Per quanto riguarda il riposizionamento la
soluzione più semplice è di usare lo stesso algoritmo di layout per ogni frame logico.
BIBLIOGRAFIA:
[1]
Ivan Herman, Member, Guy Melançon, and M. Scott Marshall
Graph Visualization and Navigation in Information Visualization: a Survey
IEEE CS Society
[2]
George W. Furnas
Effective View Navigation
[3]
Manojit Sarkar and Marc H. Brown
Graphical Fisheye Views of Graphs