mercoledì 5 agosto 2009

Charts - Test per una web application.

SERVER SIDE

Ho messo su un esempio per ognuna di queste librerie citate tranne che per ILog, per la quale non è possibile al momento (23 luglio) nemmeno scaricare una versione shareware.

Qui sotto faccio un paio di commenti a ogni libreria.

JFreeChart + cewolf (link)

Ho provato JFreeChart + cewolf, con licenza LGPL

L'esempio che ho messo su con un tutorial crea un grafico casuale con dei dati generati in una servlet.

Permette una configurazione dei dati semplice e anche pulita in pagine JSP grazie alle librerie di tag già pronti.

non è ajax enabled. La pagina creata deve essere ricaricata interamente dal server. Questo può essere aggirato implementando una minima funzionalità ajax o come nell'esempio dove ho posto il grafico in un iframe che viene ricaricato per non causare il reload di tutta la pagina.

funzioni come zoom/pan non sono supportate dalla libreria.

Questa libreria sembra molto seguita e creare un line chart richiede molto poca configurazione e sforzo. Tuttavia i punti critici potrebbero renderla insufficiente.

Chart director (link) costa 499 per la redistribuzione

Viene creata un’immagine sul server che periodicamente viene scaricata.

Per testare l’esempio che allego lanciare la applicazione e andare su

/ChartDirectorTest/realtimedemo.jsp (o l'ultimo link in basso a sinistra se si parte dalla index dell'applicazione)

Per provarla ho modificato la demo del realtime in modo da permettere la scelta del valore 0.1 secondi nel menu a tendina della real time chart demo.

Sul mio pc sembra un po' lenta ma potrebbe darsi che è questo pc che si blocca un po' come in molte operazioni javascript

Permette anche la creazione dei grafici più disparati e permette zoom&pan

Tuttavia la creazione è un (poco) più complessa che nel caso di JFreeChart perché non ci sono tag già pronti (vedi il file realtimechart.jsp dell'esempio).

ILog (IBM) (link):

real-time ajax-enabled server charts

http://svdemo01.ilog.com/real-time-81/

Questa libreria commerciale permetterebbe aggiornamenti realtime.

La versione demo non è al momento disponibile e i prezzi non sono visualizzati. Il loro sito consiglia di richiedere informazioni e così ho fatto.

Le prime librerie che ho visto server side aggiornano il grafico caricando ogni volta una nuova immagine dal server. Per refresh frequenti allora forse è più utile una libreria javascript.

CLIENT SIDE

Tutte le librerie fondate su Jquery sono sotto licenza MIT O GPL.

Da quel che ho capito la GPL è quella "virale", però se la MIT va bene per uso commerciale possiamo usarle. Mi sembra che la MIT permetta l'uso commerciale purché si citi la licenza stessa della libreria usata (in modo che la licenza della libreria sia nota anche nel software nuovo).

Ho provato JQuery FLOT, le cui API sono a:

(link)

Modificando uno degli esempi statici nel loro pacchetto, ho ottenuto un grafico che si aggiorna ogni intervallo desiderato (nell'esempio mezzo secondo).

La creazione è con javascript a oggetti un po' più complesso del js-charts ma molto più pieno di opzioni. La grafica è più accattivante, consente lo zoom e il pan, ha dei tooltip cliccabili e offre funzioni per riprendere i valori dei dati inseriti nel grafico.

Un bell'articolo a riguardo:

http://www.michelem.org/2008/01/07/ajax-plotting-drawing-charts-using-jquery-and-flot/

Jquery Sparkline ha una licenza BSD ("roughly equivalent to MIT one")

(link)

Sparkline mi sembra decisamente più veloce nell'aggiornamento, tant'è che nell'esempio ho messo un refresh di 10 millesimi e l'animazione sembra fluida.

Ha meno funzioni di Flot soprattutto per gestire punti all'interno del grafico con label e click del mouse su di essi, però è più veloce.

jquery visualize

(link)

JQuery Visualize offre una semplice struttura tabellare di background al grafico che si crea. Mi sembra un po' più lento nell'attivare il refresh del grafico tramite

myChart.trigger('visualizeRefresh');

L'esempio che ho creato aggiorna il dom del documento con una nuova colonna (in teoria) ogni 100ms e aziona il refresh.

I tasti display e hide li ho messi per la tabella che eventualmente così può essere nascosta.

GWT Chronoscope

(link)

Ho mandato già un email a timepedia (sviluppatori di questa libreria) richiedendo informazioni sul tipo di licenza e su quanto costi la loro libreria per uso commerciale ma non ho avuto ancora risposta.

E' un progetto molto grande e pesante e a difficoltà il grafico si carica nel mio browser. Può gestire quantità massive di dati a quanto dicono loro, e sembra sicuramente la libreria più piena di funzioni. Ma se non si ha bisogno di tutte queste funzioni, eviterei di imparare una libreria così grande e pesante.


Una ottima lista a prima vista sembra quella a

http://www.datavisualization.ch/tools/13-javascript-libraries-for-visualizations/comment-page-1#comment-948

Nessun commento:

Posta un commento