web-dev-qa-db-fra.com

Python Plotly - Graphique hors ligne intégré au HTML (ne fonctionne pas)

J'ai construit un graphique que je souhaite intégrer dans un fichier HTML. Si j'utilise plotly en ligne, cela fonctionne comme prévu. Cependant, si j'utilise OFFLINE, le graphique hors ligne fonctionne (c'est-à-dire qu'il ouvre un graphique HTML séparé avec lui), mais il n'est pas intégré dans le HTML (nick.html), c'est-à-dire que le iframe est vide.

Voici mon code:

fig = dict(data=data, layout=layout)
plotly.tools.set_credentials_file(username='*****', api_key='*****')
aPlot = plotly.offline.plot(fig, config={"displayModeBar": False}, show_link=False,
                             filename='pandas-continuous-error-bars.html')

html_string = '''
<html>
    <head>
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css">
        <style>body{ margin:0 100; background:whitesmoke; }</style>
    </head>
    <body>
        <h1>Monthly Report</h1>

        <!-- *** Section 1 *** --->
        <h2></h2>
        <iframe width="1000" height="550" frameborder="0" seamless="seamless" scrolling="no" \
src="''' + aPlot + '''.embed?width=800&height=550"></iframe>
        <p> (Insights).</p>


    </body>
</html>'''

f = open("C:/Users/nicholas\Desktop/nick.html",'w')
f.write(html_string)
f.close()

Quelqu'un sait pourquoi il n'est pas intégré et comment y remédier?

15
ScoutEU

aPlot est le nom de fichier de votre fichier Plotly.

Dans votre iframe vous ajoutez .embed?width=800&height=550 au nom de fichier qui donne un nom de fichier qui n'existe pas.

Lorsque vous supprimez cette chaîne, c'est-à-dire src="''' + aPlot + '''", ça devrait marcher.

Au lieu d'incorporer l'intégralité du fichier HTML, vous pouvez également utiliser l'approche suggérer ici qui génère un fichier HTML plus petit, c'est-à-dire générer un div avec toutes les informations pertinentes et inclure plotly.js dans votre en-tête.

import plotly

fig = {'data': [{'x': [1,2,3],
                  'y': [2,5,3],
                  'type': 'bar'}],
      'layout': {'width': 800,
                 'height': 550}}

aPlot = plotly.offline.plot(fig, 
                            config={"displayModeBar": False}, 
                            show_link=False, 
                            include_plotlyjs=False, 
                            output_type='div')

html_string = '''
<html>
    <head>
      <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css">
      <style>body{ margin:0 100; background:whitesmoke; }</style>
    </head>
    <body>
      <h1>Monthly Report</h1>
      ''' + aPlot + '''
    </body>
</html>'''

with open("nick.html", 'w') as f:
    f.write(html_string)
15
Maximilian Peters