Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

335
Views
¿Puede el backend 'webagg' para matplotlib funcionar con mi sitio django?

He buscado mucho sobre este tema, pero no soy desarrollador web, así que sé que me faltan algunos conceptos.

Cuando ejecuto matplotlib localmente y especifico el backend 'webagg', ejecutar plt.show() inicia un servidor web liviano y abre el gráfico en mi navegador con funcionalidad interactiva completa.

 import matplotlib as mpl mpl.use('webagg') from matplotlib import pyplot as plt import numpy as np f,ax = plt.subplots(1) ydata = np.random.randint(0,100,100) xdata = np.linspace(1,100,100) ax.plot(xdata,ydata,picker=5) ax.set_title('Click the line to change the color') def onpick(event): event.artist.set_color('red') f.canvas.draw_idle() f.canvas.mpl_connect('pick_event', onpick) plt.show()

Mi pregunta es: ¿es posible usar el backend de webagg con mi sitio web de django para servir figuras de matplotlib interactivas ordenadas a los usuarios? En otras palabras, ¿puedo usar el código anterior en algún lugar de mi sitio de Django para que la trama se incruste en una página web?

(Conozco herramientas como mpld3, que son geniales, pero no recrean completamente la funcionalidad del widget/selector en matplotlib).

about 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Hay un ejemplo de cómo incrustar las figuras interactivas usando web_agg y Tornado . Lo cambié con éxito para usar Flask, pero sigo usando los sockets web de Tornado. Primero pruebe a ejecutar el siguiente ejemplo y vea si la interactividad es 'suficientemente buena' para usted. Cuando lo ejecuté, la respuesta no es muy rápida (lea la última parte si desea obtener más información al respecto).

Básicamente, para implementarlo en una página web, usa un websocket para enviar/recibir mensajes para la parte interactiva y para enviar la trama como datos binarios si tiene que volver a dibujarse.

Siguiendo el ejemplo, es bastante sencillo usarlo con diferentes marcos/servidores (consulte el enlace anterior para obtener más detalles):

  • crea tu figura como normal.
  • crea un administrador para tu figura con webagg backend
  • servir el mpl.js
  • implementar un objeto websocket, necesita las funciones send_json y send_binary (estas se llaman desde el código python de webagg cuando agrega el websocket al administrador)
  • en la plantilla que sirves en el lado del cliente. Use javascript para crear un websocket y cree una figura usando mpl.js.

Es bueno revisar las cosas de webagg github (webagg_core, webagg, mpl.js, tal vez también nb_agg). Sé que esta no es una respuesta completa, pero espero que le brinde alguna dirección sobre lo que debe hacer.

Un poco fuera de tema sobre el comentario en el primer párrafo:

Desafortunadamente, soy nuevo en el desarrollo web para determinar si la respuesta es un límite de cómo se implementa web_agg en el ejemplo, o si depende de cómo está configurado su servidor/backend/threading. Por lo que puedo ver, el backend nb_agg del cuaderno jupyter también usa parte del backend web_agg y parece funcionar mucho más receptivo en el cuaderno. Pero probablemente debería hacer una pregunta separada para discutir estos temas.

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!