2013-10-14 11 views
9

Привет, я использую plotly для генерации графов с использованием Python, Bottle. Однако это возвращает мне URL-адрес. как:Вставить Графический граф на веб-страницу с бутылкой

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

Я хочу, чтобы вставить весь граф в моей веб-страницы вместо того, чтобы обеспечить связь. Это возможно?

Мой код:

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

Считается, что вы используете шаблоны в колбе? –

+0

У меня были шаблоны. Но как это поможет? – user2834165

ответ

10

Да, вложение возможно. Вот IFrame фрагмент кода можно использовать (с любым 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>

Участок встраиваются в URL, который сделан специально для встраивания участка. Таким образом, в этом случае ваш участок https://plot.ly/~abhishek.mitra.963/1/. URL-адрес для его встраивания делается путем добавления .embed к URL-адресу: https://plot.ly/~abhishek.mitra.963/1.embed.

Вы можете изменить размеры ширины и высоты в этом фрагменте. Чтобы получить код iframe и увидеть разные размеры, вы можете щелкнуть значок встраивания на графике или поделиться им сгенерировать код. Вот где варианты встраивать являются:

enter image description here

Here's how an embedded graph looks in the Washington Post. И here - полезный учебник, который кто-то сделал для разработки с Plotly и Bottle.

Дайте мне знать, если это не сработает, и я рад помочь.

Раскрытие информации: Я нахожусь в команде Plotly.

+0

Я ищу что-то подобное. Моя ситуация заключается в том, чтобы запускать код python после интервала каждые 5 минут и обновлять один и тот же сюжет. Вместо этого я получаю новое окно каждый раз. Я пытаюсь внедрить iframe веб-страницы, поэтому вам нужно обновить один и тот же сюжет. Мне нравится 20 таких сюжетов. –

+2

URL-адрес участка от API, не так ли? Есть ли способ сделать что-то подобное с недавно опубликованными автономными библиотеками? –