Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Embed Plotly graph into a webpage with Bottle

Hi i am using plotly to generate graphs using Python, Bottle. However, this returns me a url. Like:

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

I want to paste the entire graph into my webpage instead of providing a link. Is this possible?

My code is:

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)
like image 774
user2834165 Avatar asked Oct 14 '13 09:10

user2834165


People also ask

How do I insert a Plotly graph into my website?

To share a plot from the Chart Studio Workspace, click 'Share' button on the left-hand side after saving the plot. The Share modal will pop-up and display a link under the 'Embed' tab. You can then copy and paste this link to your website. You have the option of embedding your plot as an HTML snippet or iframe.

Can you use Plotly with flask?

The Flask app does a similar job to the Dash app but without building the actual web page. The web page is an HTML template and we pass the Plotly data to it from the Flask app so it can display the charts.

How do you plot a graph in Python using a website?

Three steps are required to integrate a Python graph into an HTML Web site: generate the graph either in Plot.ly or Altair. save the graph as an HTML page. manipulate the generated HTML.


1 Answers

Yes, embedding is possible. Here's an iframe snippet you can use (with any Plotly URL):

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

The plot gets embedded at a URL that is made especially for embedding the plot. So in this case your plot is https://plot.ly/~abhishek.mitra.963/1/. The URL to embed it is made by adding .embed to the URL: https://plot.ly/~abhishek.mitra.963/1.embed.

You can change the width/height dimensions in that snippet. To get the iframe code and see different sizes, you can click the embed icon on a plot, or when you share it generate the code. Here's where the embed options are:

enter image description here

Here's how an embedded graph looks in the Washington Post. And here is a helpful tutorial someone made on developing with Plotly and Bottle.

Let me know if that doesn't work, and I'm happy to help out.

Disclosure: I'm on the Plotly team.

like image 140
Mateo Sanchez Avatar answered Oct 02 '22 14:10

Mateo Sanchez