Google Chart API

Recentemente Google ha reso pubblica una sua nuova API, Google Chart API. Come il nome lascia immaginare questa API permette agli sviluppatori di generare grafici semplicemente facendo una richiesta HTTP GET.

Fino ad ora se si aveva la necessità di generare un grafico a partire da alcuni dati si doveva generare da zero l’immagine oppure inserire un piccolo script in flash che, ricevuti i dati, si occupava di generare il grafico (un esempio molto valido e con una ottima libreria per Ruby On Rails è XML/SWF Charts). Google Chart API supporta molte tipologie differenti di grafici, a linee, a punti, a barre, a torta e addirittura i diagrammi di Venn e consente di personalizzarli in ogni aspetto.

Un possibile problema all’utilizzo di questi strumenti consiste nella loro flessibilità di utilizzo, i grafici possono differire molto gli uni dagli altri, di conseguenza è difficile riuscire a soddisfare tutte le necessità che si possono presentare. Google Chart API sembra rispondere bene a queste necessità permettendo di fare praticamente ogni cosa, qui sotto potete vedere alcuni esempi nei quali ho cercato di modificare più cose possibili in modo tale da rendere l’idea di cosa sia possibile fare con questa API. Due cose che mi hanno piacevolmente sorpreso sono state la possibilità di utilizzare un gradiente come sfondo del grafico e l’aspetto tridimensionale del grafico a torta.

Attualmente l’unico limite che è presente sono le 50000 richieste al giorno per utenza, terminate le quali viene impedito l’accesso all’API (limite che nella maggior parte dei casi è più che accettabile).

Un altro fattore importante nell’utilizzo dell’API è la sua facilità di implementazione, anche sotto questo punto di vista Google Chart API risulta vincente, essa infatti genera semplicemente un’immagine Png, di conseguenza è possibile inserirla nella pagina con un semplice tag <img> inserendo come src l’indirizzo dell’API (nel formato http://chart.apis.google.com/chart?<parametro1> &<parametro2> &<parametroN>).

Ecco qualche esempio:

Grafico a linea 1 fonte

Grafico a linea 2 fonti

Grafico a barre

Grafico a torta 2D

Grafico a torta 3D

Diagramma di Venn

Grafico a punti

Comments

  1. L’idea mi piace molto, ma dal punto di vista estetico potevano sforzarsi un po’ di più, secondo me. I grafici risultanti non sono male, ma ho visto di meglio in componenti .NET creati da piccole aziende.

  2. Io inizialmente speravo di poter creare grafici come quelli di Google Finance, ma sembra che mi aspettassi troppo … speriamo per il futuro!

  3. A me sembra invece un ritorno al passato dopo l’attuale tendenza all’uso di grafici generati client-side.
    Con in più l’aggravante che dipendi da un servizio esterno e non da librerie installate sul tuo server.
    E` vero che dipendere da server esterni capita sempre più spesso, però qui ti capita per un grafico che è parte di una pagina che può essere servita per il resto del testo. La differenza è eclatante: se mi mandano un link che è “rotto” posso pensare che il server è down e magari ripasso dopo un po’. Se il link è attivo e solo una delle immagini è “rotta” allora penso che il sito è fatto male e me ne dimentico.

  4. Fabio says:

    Ciao, cliccando con il tasto destro del mouse su uno dei tuoi grafici e andando su proprietà ho visto che l’url è del tipo:
    “http://stacktrace.it/site_media/luambo/uploads/2007/12/07/3fette3d.png”.
    Anch’io vorrei che la chiamata a chart.apis.google.com non venisse fatta dal client, inserendo nella pagina jsp il tag img con l’url (e quindi visualizzerei nel mio caso: “http://chart.apis.google.com/chart?cht=bvs&chd=t:10,2,1,2,0&chs=700×350&chco=4d89f9,c6d9fd&chbh=70,70&chxt=x,y&chxl=0:|Da 0 a 20|Da 21 a 40|Da 41 a 60|Da 61 a 80|Da 81 a 100|&chxr=1,0,10&chds=0,10&chf=c,lg,45,ffffff,0,E7E7E7,0.75|bg,s,EFEFEF”) ma dal server e poi sarebbe quest’ultimo a fornire l’informazione generata al client.
    Una soluzione a questo problema?
    Grazie,
    Fabio

Policy per i commenti: Apprezzo moltissimo i vostri commenti, critiche incluse. Per evitare spam e troll, e far rimanere il discorso civile, i commenti sono moderati e prontamente approvati poco dopo il loro invio.