2011-08-15 4 views
0

Je construis une application web dans Django et je cherche à générer des graphiques dynamiques basés sur les données.Génération de graphiques dynamiques

Auparavant, j'utilisais les graphiques d'images Google, mais j'ai rencontré des limitations importantes avec l'API, y compris la contrainte de longueur d'URL. Je suis passé à l'utilisation de matplotlib pour créer mes graphiques. Je me demande si ce sera une mauvaise décision pour la mise à l'échelle future - est-ce que les sites de production utilisent le matplotlib? Il faut environ 100ms pour générer un seul graphique (beaucoup plus long que l'interrogation de la base de données pour les données), est-ce simplement hors de question en termes de mise à l'échelle/gestion de plusieurs requêtes?

Répondre

1

Vous pouvez mettre à l'échelle matplotlib pour la création de graphiques si vous pouvez rendre les graphiques en dehors du cycle de demande/réponse avec quelque chose comme Celery. Vous devez gérer le stockage du graphique rendu ainsi que l'invalider lorsque les données changent. Cela dépendra vraiment de la fréquence à laquelle les données changent et à quelle fréquence elles sont visualisées.

Cependant, j'ai tendance à coller avec les bibliothèques côté client pour les graphiques tels que jqplot ou highcharts.

0

Pour ce genre de fonctionnalité, vous devriez regarder dans les files d'attente de messages, par exemple ZeroMQ. Cela vous permet d'utiliser la génération de graphiques asynchrones qui ne bloque pas les processus du serveur Web (si elle est implémentée correctement).

0

Si la performance est un problème et que vous n'avez pas besoin de graphiques sophistiqués, vous pouvez vous en sortir sans créer d'images du tout. Rendu explicitement dimensionné et coloré les divs pour un graphique à barres simple en html. Appliquer une ombre de boîte et/ou un fond dégradé pour les bonbons pour les yeux. Je l'ai fait dans certaines pages Web de rapport, affichant un petit graphique de 5 barres (quintiles) dans chaque rangée d'une grande table, avec une énorme vitesse et presque aucune charge de serveur. Les utilisateurs l'adorent pour le retour rapide et succinct.

Avec canvas et javascript, vous pourriez améliorer ce schéma pour d'autres types de graphiques. Je ne sais pas si vous pourriez utiliser le code graphique de Google pour cela sans passer par leur API, mais quelques lignes ou segments de cercle devraient être faciles à peindre, sinon.

Questions connexes