Usando matplotlib con vistas genéricas de Django
Estoy tratando de escribir una página detallada para cada fila de datos en la tabla. Me gustaría generar un gráfico matplotlib dinámicamente para cada página utilizando los datos de cada fila.
He intentado el código con una vista normal y funciona. Sin embargo, cuando se usa con eldetail_view
página la imagen aparece como un enlace roto. ¿Qué debo incluir en elDetailView
¿Clase para generar el gráfico para cada página?
graph.py
:
def plotResults(request):
p=get_object_or_404(Read_alignment,pk=id)
x =[]
y=[]
x.append(p.start)
x.append(p.stop)
y.append(p.count)
y.append(p.count)
fig=plt.figure()
ax= fig.add_subplot(311)
ax.set_xlim(right=30)
ax.step(x,y,'-',where='post', label='post')
canvas = FigureCanvas(fig)
response= HttpResponse(mimetype='image/png')
canvas.print_png(response)
return response
url.py
:
url(r'^(?P<pk>\d+)/align/plotResults.pngviews.py
:
class AlignDetailView(DetailView):
model = Read_alignment
def get_queryset(self):
queryset= Read_alignment.objects.filter(chr__icontains=3l)
return queryset
def get_context_data(self, **kwargs):
context = super(AlignDetailView,self).get_context_data(**kwargs)
context['alignment'] = self.object
return context
¿Cómo debo vincular el gráfico a la plantilla preferiblemente sin etiquetas estáticas o de medios? ¿Es posible generar los gráficos sin guardar las imágenes PNG en la carpeta estática?
,plotResults),
url(r'^(?P<pk>\d+)/align/views.py
:
class AlignDetailView(DetailView):
model = Read_alignment
def get_queryset(self):
queryset= Read_alignment.objects.filter(chr__icontains=3l)
return queryset
def get_context_data(self, **kwargs):
context = super(AlignDetailView,self).get_context_data(**kwargs)
context['alignment'] = self.object
return context
¿Cómo debo vincular el gráfico a la plantilla preferiblemente sin etiquetas estáticas o de medios? ¿Es posible generar los gráficos sin guardar las imágenes PNG en la carpeta estática?
,AlignDetailView.as_view(), name='AlignDetailView'),
views.py
:
class AlignDetailView(DetailView):
model = Read_alignment
def get_queryset(self):
queryset= Read_alignment.objects.filter(chr__icontains=3l)
return queryset
def get_context_data(self, **kwargs):
context = super(AlignDetailView,self).get_context_data(**kwargs)
context['alignment'] = self.object
return context
¿Cómo debo vincular el gráfico a la plantilla preferiblemente sin etiquetas estáticas o de medios? ¿Es posible generar los gráficos sin guardar las imágenes PNG en la carpeta estática?