32 votes

Comment exporter un tableau de bord plotly dans un fichier html autonome pour le partager avec les autres ?

J'ai construit un tableau de bord interactif et je cherche un moyen d'exporter cette application au format HTML et de la partager avec d'autres.

Y a-t-il des conseils à me donner ?

J'ai cherché sur Google, et la plupart des réponses me renvoient aux liens suivants.

https://plot.ly/python/getting-started-with-chart-studio/

et j'ai essayé de mettre :

import plotly.io as pio

pio.write_html(app, file='hello_world.html', auto_open=True)

dans mon app.py après :

if __name__ == "__main__":
    app.run_server(debug=True, port=8052)

mais cela ne fonctionne pas.

14voto

Carlos Mercado Points 85

Je pense donc que la réponse dont vous aviez besoin était "c'est impossible".

Pour clarifier la demande répétée de conversion d'un tableau de bord en HTML :

HTML est un langage de balisage ; il affiche le texte de manière esthétique. Vous pouvez utiliser CSS pour améliorer l'esthétique.

L'idée de l'interactivité comme un tableau de bord où onClick() entraîne des changements dans les visuels parce que le fichier csv a été réinterrogé, filtré ou recalculé, c'est ce qu'un côté serveur apporte au front-end HTML/CSS/JavaScript.

Il n'est pas possible d'avoir un tableau de bord entièrement encapsulé et interactif dans un simple fichier HTML. Vous devez faire appel à la logique côté serveur. C'est pourquoi tout le monde mentionne Heroku, AWS, etc.

Si votre tableau de bord n'est pas interactif, et qu'il s'agit simplement d'un ensemble de visuels statiques avec quelques effets de survol basiques, alors un fichier HTML autonome peut lire des SVGs qui contiennent du texte préparé pour le survol. C'est ce que fait la fonction write_html de plotly (je crois que plotly.offline.plot utilise cette fonction sous le capot ou quelque chose de similaire).

L'essentiel de ce que quelqu'un d'autre a noté est repris ici :

https://gist.github.com/ybressler/e0d40e63a5f35cf2dda65378333c6436

Montre les limites du "tableau de bord" HTML uniquement. Vous pouvez afficher/cacher et survoler des points, mais vous ne pouvez pas incorporer des curseurs qui changent de valeur sans le côté serveur ou une logique d'affichage/cache très gonflée et complexe cachée quelque part.

Image of 3-D HTML plot with limited interactivity.

4voto

Yaakov Bressler Points 4324

En supposant que votre application comporte de nombreux composants interdépendants, je vous suggère de déployer votre application plotly dash sur heroku : https://dash.plot.ly/deployment

Si vous avez plusieurs objets graphiques, vous pouvez les exporter individuellement au format html avec le code suivant :

plotly.offline.plot(
  # Your plotly go figure here
  show_link=False,
  filename = 'my_file.html'
)

Vous pouvez également intégrer votre graphique :

from plotly.offline.offline import _plot_html
#Only for embedding
embedable_chart = plotly.offline.plot(fig, include_plotlyjs=False, output_type='div')
f = open("embedable_chart.text", "w")
f.write(embedable_chart)
f.close()

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