Grafici nelle applicazioni Web Django
Domanda
Voglio incorporare un grafico in un'applicazione Web sviluppata usando django.
Mi sono imbattuto in API per grafici di Google , ReportLab , PyChart , MatPlotLib e ChartDirector
Voglio farlo sul lato server piuttosto che inviare la richiesta AJAX alle API dei grafici di Google, poiché voglio anche incorporare il grafico nel PDF.
Qual è l'opzione migliore da usare e quali sono i meriti e i demeriti relativi dell'uno rispetto all'altro.
Soluzione
Un'altra scelta è CairoPlot .
Abbiamo scelto matplotlib sugli altri per una seria rappresentazione grafica all'interno di una delle nostre app di django, principalmente perché era l'unica a darci esattamente il tipo di controllo di cui avevamo bisogno.
Le prestazioni che generano PNG andavano bene per noi ma ... era un'app altamente specializzata con meno di 10 accessi al giorno.
Altri suggerimenti
Bene, sono coinvolto in un progetto open source, Djime , che utilizza OpenFlashChart 2 .
Come puoi vedere da
Apri Flash Chart 2 http://teethgrinder.co.uk/open-flash-chart- 2 / libreria python http://btbytes.github.com/pyofc2/ kybi
Un pacchetto che volevo provare è graphite . È un server grafico / piattaforma costruito con Django. È specializzato per "dati numerici di serie temporali" tuttavia, come i prezzi delle azioni o l'utilizzo della larghezza di banda. Se questo si adatta alle tue necessità, verificherei. Ecco alcuni screenshot:
Mi piacciono i grafici lato client perché è possibile ottenere la stampa a pagina intera.
Una buona opzione sembra essere Jquery Flot: http://code.google.com/p/ flot / che può caricare dati JSON. Tuttavia, non otterrai il supporto pdf.
Forse potresti voler dare un'occhiata qui: Django Plotting app . Il HowTo descrive come incorporare i grafici matplotlib nell'interfaccia di amministrazione e creare una vista PDF.
Ho usato FusionCharts Free con Django.
È basato su flash, open source, con più licenze ed è ben documentato. È ActionScript 1, ma la versione AS non era in realtà un criterio per me, anche se potrebbe essere per gli altri.