2017-11-28 169 views
14

Bir HTML dosyasına gömmek istediğim bir grafik oluşturdum. Çevrimiçi olarak plotly kullanırsam, amaçlanan şekilde çalışır. Bununla birlikte, OFFLINE kullanırsam çevrimdışı grafik çalışır (yani içinde ayrı bir HTML grafiği açılır), ancak HTML'ye (nick.html) gömülmez, yani iframe boştur.Python Plotly - Çevrimdışı grafik HTML'ye gömülü (Çalışmıyor)

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

Herkes onu gömme ve nasıl bunu düzeltmek için değil neden biliyorum:

Bu benim kodudur? Plotly dosyanızın dosya adıdır.

cevap

9

aPlot.

iframe içinde .embed?width=800&height=550 dosya adını, dosya adında olmayan bir dosya adıyla sonuçlandırabilirsiniz.

Bu dizeyi kaldırdığınızda, yani src="''' + aPlot + '''", çalışması gerekir. Bunun yerine aynı zamanda yaklaşımı kullanabilirsiniz bütün HTML dosyasını gömme

ilgili tüm bilgileri içeren daha küçük bir HTML dosyası oluşturur here, yani üretmek bir div önermek ve başlığındaki plotly.js sayılabilir.

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) 
+1

Hey, teşekkürler. Sadece bir uçağa biniyorum, yani çalışıp çalışmadığını kontrol edemiyorum ama mantık iyi görünüyor ve anlıyorum, çok teşekkür ederim :) – ScoutEU