2 votes

Django - comment intégrer au mieux matplotlib

J'essaie d'afficher un graphique en utilisant matplotlib et django. J'ai lu pas mal de questions sur stack mais je ne comprends toujours pas quelle est la meilleure façon d'utiliser matplotlib dans Django.

SITUATION :

J'ai un modèle qui contient un grand nombre de données. Dans views.py, j'ai un formulaire simple qui capture certaines données, interroge le modèle et renvoie un sous-ensemble de données. Voici la section views.py correspondante :

def getinput(request):
     if request.method == 'POST':
         form = get_data(request.POST)

         if form.is_valid():
             down = form.cleaned_data['get_down']
             ytg = form.cleaned_data['get_ytg']
             yfog = form.cleaned_data['get_yfog']
             map_data = next_play.objects.filter(last_dwn__exact=down, last_yfog__exact=yfog, last_ytg__exact=ytg)
             context = {'form': form, 'query_data': map_data}
             return render(request, 'play_outcomes/output.html', context)
     else:
         form = get_data()

     return render(request, 'play_outcomes/getinput.html', {'form': form})

Quand je suis arrivé à play_outcomes/getinput et entrez dwn ytg yfog le modèle produit alors une tonne de données.

Ce sont ces données que je souhaite représenter, c'est-à-dire les données contenues dans le fichier map_data .

QUESTION :

Comment intégrer matplotlib dans ce projet ? Dois-je intégrer le module matplotlib dans views.py, dois-je le mettre en place dans un module python séparé ? Je suppose que je dois créer un fichier png et l'afficher ensuite ?

2voto

Giacomo Catenazzi Points 3105

Une figure est une vue, donc une vue est un bon endroit. D'un autre côté, la librairie matplot peut être verbeuse, et vous aimeriez définir diverses constantes, afin que chaque figure ait le même style. Pour cette raison, je recommanderais de déplacer tout le code de la figure dans un nouveau fichier.

En général, j'évite de créer des graphes dans Django. Je ne crée qu'un lot "hors ligne", pour créer quelques graphiques statistiques, ou j'essaierais d'utiliser d3.js, pour décharger la génération de figures sur les clients (mais de manière à ce qu'ils reçoivent l'ensemble des données). Il existe également des variantes hybrides, que je n'ai jamais essayées, par exemple http://subsetlab.com/super-fund-performance-and-fees.html (voir la deuxième partie : "comment faire").

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X