2013-10-14 19 views
9

Hallo ich verwende Plotly, um Diagramme mit Python, Flasche zu generieren. Dies gibt mir jedoch eine URL zurück. Like:Grafik in eine Webseite mit Bottle einbetten

https://plot.ly/~abhishek.mitra.963/1 

Ich möchte die gesamte Grafik in meiner Webseite einzufügen, anstatt einen Link bereitzustellen. Ist das möglich?

Mein Code ist:

import os 
from bottle import run, template, get, post, request 
from plotly import plotly 

py = plotly(username='user', key='key') 

@get('/plot') 
def form(): 
    return '''<h2>Graph via Plot.ly</h2> 
       <form method="POST" action="/plot"> 
       Name: <input name="name1" type="text" /> 
       Age: <input name="age1" type="text" /><br/> 
       Name: <input name="name2" type="text" /> 
       Age: <input name="age2" type="text" /><br/> 
       Name: <input name="name3" type="text" /> 
       Age: <input name="age3" type="text" /><br/>     
       <input type="submit" /> 
       </form>''' 

@post('/plot') 
def submit(): 
    name1 = request.forms.get('name1') 
    age1 = request.forms.get('age1') 
    name2 = request.forms.get('name2') 
    age2 = request.forms.get('age2') 
    name3 = request.forms.get('name3') 
    age3 = request.forms.get('age3') 

    x0 = [name1, name2, name3]; 
    y0 = [age1, age2, age3]; 
    data = {'x': x0, 'y': y0, 'type': 'bar'} 
    response = py.plot([data]) 
    url = response['url'] 
    filename = response['filename'] 
    return ('''Congrats! View your chart here <a href="https://plot.ly/~abhishek.mitra.963/1">View Graph</a>!''') 

if __name__ == '__main__': 
    port = int(os.environ.get('PORT', 8080)) 
    run(host='0.0.0.0', port=port, debug=True) 
+0

Immer in Betracht gezogen, Vorlagen in der Flasche zu verwenden? –

+0

Ich hatte Vorlagen. Aber wie würde es helfen? – user2834165

Antwort

10

Ja, Einbettung möglich ist. Hier ist ein iframe-Schnipsel Sie (mit einem beliebigen Plotly URL) verwenden können:

<iframe width="800" height="600" frameborder="0" seamless="seamless" scrolling="no" src="https://plot.ly/~abhishek.mitra.963/1/.embed?width=800&height=600"></iframe>

Die Handlung wird in einer URL eingebettet, die speziell hergestellt wird, um die Handlung zu integrieren. Also in diesem Fall ist Ihr Grundstück https://plot.ly/~abhishek.mitra.963/1/. Die URL zum Einbetten wird durch Hinzufügen von .embed zur URL: https://plot.ly/~abhishek.mitra.963/1.embed erstellt.

Sie können die Breite/Höhe in diesem Ausschnitt ändern. Um den iFrame-Code zu erhalten und verschiedene Größen anzuzeigen, können Sie auf das Einbettungssymbol in einem Plot klicken, oder wenn Sie es teilen, generieren Sie den Code. Hier ist, wo die einbetten Optionen sind:

enter image description here

Here's how an embedded graph looks in the Washington Post. Und here ist ein hilfreiches Tutorial jemand auf die Entwicklung mit Plotly und Bottle gemacht.

Lassen Sie mich wissen, wenn das nicht funktioniert, und ich bin glücklich, zu helfen.

Offenlegung: Ich bin im Plotly-Team.

+0

Ich suche etwas ähnliches. Meine Situation besteht darin, nach einem Intervall von 5 Minuten einen Python-Code auszuführen und den gleichen Plot zu aktualisieren. Stattdessen bekomme ich jedes Mal ein neues Fenster. Ich versuche, den iframe der Webseite einzubetten, also muss die gleiche Handlung aktualisieren. Ich habe 20 solcher Parzellen. –

+2

Die plotly URL kommt von der API, richtig? Gibt es eine Möglichkeit, so etwas mit den kürzlich veröffentlichten Offline-Bibliotheken zu tun? –