Saltar al contenido

Trazar gráfico usando python y mostrarlo usando HTML

Agradeceríamos tu apoyo para extender nuestras reseñas referente a las ciencias de la computación.

Solución:

Mi sugerencia sería usar el plotly.offline módulo, que crea una versión fuera de línea de un gráfico para usted. La API gráfica en su sitio web es horrible (en realidad no querríamos saber qué argumentos toma cada función, ¿verdad?), Así que es mucho mejor recurrir al código fuente en Github.

Si observa el código fuente de plotly, puede ver que el offline.plot función toma un kwarg para output_typeque es 'file' o 'div':

https://github.com/plotly/plotly.py/blob/master/plotly/offline/offline.py

Así que podrías hacer:

from plotly.offline import plot
from plotly.graph_objs import Scatter

my_plot_div = plot([Scatter(x=[1, 2, 3], y=[3, 1, 6])], output_type='div')

Esto le dará el código (envuelto en

etiquetas) para insertar directamente en su HTML. Tal vez no sea la solución más eficiente (ya que estoy bastante seguro de que también incorpora el código d3 relevante, que podría almacenarse en caché para solicitudes repetidas), pero es autónomo.

Para insertar su div en su código html usando Flask, hay algunas cosas que debe hacer.

En su archivo de plantilla html para su página de resultados, cree un marcador de posición para su código de trama. Flask usa el motor de plantillas Jinja, por lo que se vería así:


....some html...

 div_placeholder 

...more html...

en tu petaca views.py archivo, debe renderizar la plantilla con el código de trazado insertado en el div_placeholder variable:

from plotly.offline import plot
from plotly.graph_objs import Scatter
from flask import Markup
...other imports....

@app.route('/results', methods=['GET', 'POST'])
def results():
    error = None
    if request.method == 'POST':
        my_plot_div = plot([Scatter(x=[1, 2, 3], y=[3, 1, 6])], output_type='div')
        return render_template('results.html',
                               div_placeholder=Markup(my_plot_div)
                              )
    # If user tries to get to page directly, redirect to submission page
    elif request.method == "GET":
        return redirect(url_for('submission', error=error))

Obviamente YMMV, pero eso debería ilustrar el principio básico. Tenga en cuenta que probablemente recibirá una solicitud de usuario utilizando datos POST que deberá procesar para crear el gráfico plotly.

Puedes usar el .to_html() método:

https://plot.ly/python-api-reference/generated/plotly.graph_objects.Figure.html#plotly.graph_objects.Figure.to_html

import plotly.express as px

fig = px.scatter(x=[0, 1, 2, 3, 4], y=[0, 1, 4, 9, 16])

div = fig.to_html(full_html=False)  # Get the 
to send to your frontend and embed in an html page

Aquí tienes las comentarios y puntuaciones

Si crees que te ha resultado de provecho este artículo, sería de mucha ayuda si lo compartes con el resto entusiastas de la programación de esta manera contrubuyes a extender nuestra información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *