2013-10-14 22 views
9

Ciao sto usando la trama per generare grafici usando Python, Bottle. Tuttavia, questo mi restituisce un url. Come:Incorpora il grafico di Plotly in una pagina Web con Bottle

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

voglio incollare l'intero grafico nella mia pagina web invece di fornire un collegamento. È possibile?

Il mio codice è:

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

Hai mai considerato l'utilizzo di modelli nel pallone? –

+0

ho avuto i modelli. Ma come potrebbe aiutare? – user2834165

risposta

10

Sì, embedding è possibile. Ecco un frammento di codice iframe è possibile utilizzare (con qualsiasi URL Plotly):

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

La trama viene inserita in un URL che è fatto soprattutto per l'incorporamento della trama. Quindi in questo caso la trama è https://plot.ly/~abhishek.mitra.963/1/. L'URL per incorporarlo viene creato aggiungendo .embed all'URL: https://plot.ly/~abhishek.mitra.963/1.embed.

È possibile modificare le dimensioni di larghezza/altezza in quello snippet. Per ottenere il codice iframe e visualizzare dimensioni diverse, puoi fare clic sull'icona incorporata su un grafico o, quando lo condividi, generare il codice. Ecco dove le opzioni di incorporamento sono:

enter image description here

Here's how an embedded graph looks in the Washington Post. E here è un utile tutorial che qualcuno ha sviluppato sviluppando con Plotly e Bottle.

Fammi sapere se questo non funziona e sono felice di dare una mano.

Disclosure: Sono nella squadra di Plotly.

+0

Sto cercando qualcosa di simile. La mia situazione è di eseguire un codice Python dopo un intervallo di 5 minuti e aggiornare lo stesso grafico. Invece sto ricevendo una nuova finestra ogni volta. Sto cercando di incorporare l'iframe della pagina web, quindi è necessario aggiornare la stessa trama. Mi piacciono 20 trame del genere. –

+2

L'URL grafico proviene dall'API, giusto? C'è un modo per fare qualcosa di simile con le librerie offline pubblicate di recente? –

Problemi correlati