简体   繁体   English

Python Plotly - 嵌入HTML的离线图表(不工作)

[英]Python Plotly - Offline chart embed into HTML (Not working)

I have built a chart which I want to embed into an HTML file. 我已经构建了一个图表,我想将其嵌入到HTML文件中。 If I use plotly online, it works as intended. 如果我使用plotly网上,它按预期工作。 However, if I use OFFLINE the offline chart works (ie It opens up a separate HTML chart with it in it), but it is not embedding into the HTML (nick.html) ie the iframe is empty. 但是,如果我使用OFFLINE离线图表工作(即它打开一个单独的HTML图表),但它没有嵌入HTML(nick.html),即iframe为空。

This is my 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()

Anyone know why it isn't embedding and how to fix it? 任何人都知道它为什么不嵌入以及如何修复它?

aPlot is the filename of your Plotly file. aPlot是Plotly文件的文件名。

In your iframe you add .embed?width=800&height=550 to the filename which results in a filename which does not exist. iframe ,将.embed?width=800&height=550到文件名,这会导致文件名不存在。

When you remove this string, ie src="''' + aPlot + '''" , it should work. 当你删除这个字符串,即src="''' + aPlot + '''" ,它应该工作。

Instead of embedding the whole HTML file you can also use the approach suggest here which generates a smaller HTML file, ie generate a div with all the relevant information and include plotly.js in your header. 您可以使用此处建议的方法生成较小的HTML文件,即生成包含所有相关信息的div ,并在标题中包含plotly.js ,而不是嵌入整个HTML文件。

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)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM