Ответ 1
aPlot
- это имя файла Plotly.
В iframe
вы добавляете .embed?width=800&height=550
к имени файла, в результате чего имя файла не существует.
Когда вы удаляете эту строку, т.е. src="''' + aPlot + '''"
, она должна работать.
Вместо того, чтобы вставлять весь HTML файл, вы также можете использовать предлагаемый подход здесь, который генерирует более мелкий HTML файл, т.е. генерирует div
со всей необходимой информацией и включите plotly.js
в свой заголовок.
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="#" onclick="location.href='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css'; return false;">
<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)