Last active
November 29, 2018 12:30
-
-
Save hcosta/f2a111e07ba38308fc78b89cacab7146 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import io | |
import matplotlib.pyplot as plt | |
from django.http import HttpResponse | |
from django.shortcuts import render | |
from matplotlib.backends.backend_agg import FigureCanvasAgg | |
from random import sample | |
def home(request): | |
return render(request, "core/home.html") | |
def plot(request): | |
# Creamos los datos para representar en el gráfico | |
x = range(1,11) | |
y = sample(range(20), len(x)) | |
# Creamos una figura y le dibujamos el gráfico | |
f = plt.figure() | |
# Creamos los ejes | |
axes = f.add_axes([0.15, 0.15, 0.75, 0.75]) # [left, bottom, width, height] | |
axes.plot(x, y) | |
axes.set_xlabel("Eje X") | |
axes.set_ylabel("Eje Y") | |
axes.set_title("Mi gráfico dinámico") | |
# Como enviaremos la imagen en bytes la guardaremos en un buffer | |
buf = io.BytesIO() | |
canvas = FigureCanvasAgg(f) | |
canvas.print_png(buf) | |
# Creamos la respuesta enviando los bytes en tipo imagen png | |
response = HttpResponse(buf.getvalue(), content_type='image/png') | |
# Limpiamos la figura para liberar memoria | |
f.clear() | |
# Añadimos la cabecera de longitud de fichero para más estabilidad | |
response['Content-Length'] = str(len(response.content)) | |
# Devolvemos la response | |
return response |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment