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?
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)