Einbetten eines Plotly-Diagramms in eine Django-Vorlage

Ich versuche, ein grafisches Kreisdiagramm in eine Django-HTML-Vorlage einzubetten. Dies funktioniert einwandfrei, wenn das Diagramm im "Online-Modus" erstellt wird (d. H. Das HTML-Snippet ist auf dem Plot-Server gespeichert), jedoch nicht im "Offline-Modus" (d. H. Wenn das HTML lokal gespeichert ist). In letzterem Fall wird das Diagramm nicht angezeigt. Ich möchte in der Lage sein, das HTML auf meinem lokalen Server zu speichern und die Diagramme von dort einzubetten.

Hier ist das Bit, das funktioniert:

import plotly.plotly as py
import plotly.graph_objs as go
labels = [1,2,3,4]
values = [10,20,30,40]
ndata = 100
fig = {
    'data': [{'labels': labels,
          'values': values,
          'type': 'pie',
          'textposition':"none",
          'textinfo':"percent",
          'textfont':{'size':'12'},
          'showlegend':'false'}],
    'layout': {'title': 'Total:'+str(ndata),
           'showlegend':'false',
           'height':'200',
           'width':'200',
           'autosize':'false',
           'margin':{'t':'50','l':'75','r':'0','b':'10'},
           'separators':'.,'}
}
plotly_url = py.plot(fig, filename='myfile', auto_open=False)
pie_url = '<iframe width="200" height="200" frameborder="0" seamless="seamless" scrolling="no" src='+plotly_url+'.embed?width=200&height=200&link=false&showlegend=false></iframe>'

Beachten Sie, dass pie_url wird in der HTTP-Renderanforderung in Django als Zeichenfolge übergeben. Die Vorlage interpretiert den String als HTML mit dem| safe tag, d. h. {{pie_url | safe}}.

Hier ist das Bit, das nicht funktioniert:

from plotly.offline import download_plotlyjs, plot
import plotly.graph_objs as go
labels = [1,2,3,4]
values = [10,20,30,40]
ndata = 100
fig = {
    'data': [{'labels': labels,
          'values': values,
          'type': 'pie',
          'textposition':"none",
          'textinfo':"percent",
          'textfont':{'size':'12'},
          'showlegend':'false'}],
    'layout': {'title': 'Total:'+str(ndata),
           'showlegend':'false',
           'height':'200',
           'width':'200',
           'autosize':'false',
           'margin':{'t':'50','l':'75','r':'0','b':'10'},
           'separators':'.,'}
}
plotly_url = plot(fig, filename='file:///home/website/pie.html', auto_open=False)
pie_url = '''<iframe width="200" height="200" frameborder="0" seamless="seamless" scrolling="no" src=\"'''+plotly_url+'''.embed?width=200&height=200&link=false&showlegend=false\"></iframe>'''

Jeder Rat wäre dankbar.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage