From 996c0b328050179d1400964a064a72ce93505d7f Mon Sep 17 00:00:00 2001 From: Jeremy Zimmerman Date: Thu, 11 May 2017 13:40:16 -0700 Subject: [PATCH] Fixed with a working example Remember: K.I.S.S --- examples/plotly_example/plotlyjs_example.py | 86 +++----------------- examples/plotly_example/requirements.txt | 7 +- examples/plotly_example/templates/index.html | 0 3 files changed, 15 insertions(+), 78 deletions(-) delete mode 100644 examples/plotly_example/templates/index.html diff --git a/examples/plotly_example/plotlyjs_example.py b/examples/plotly_example/plotlyjs_example.py index f536067c..d32491a6 100644 --- a/examples/plotly_example/plotlyjs_example.py +++ b/examples/plotly_example/plotlyjs_example.py @@ -1,85 +1,25 @@ from sanic import Sanic - -from sanic_session import InMemorySessionInterface -from sanic_jinja2 import SanicJinja2 - -import json +from sanic.response import html import plotly - -import pandas as pd -import numpy as np +import plotly.graph_objs as go app = Sanic(__name__) -jinja = SanicJinja2(app) -session = InMemorySessionInterface(cookie_name=app.name, prefix=app.name) - -@app.middleware('request') -async def print_on_request(request): - print(request.headers) - await session.open(request) - -@app.middleware('response') -async def print_on_response(request, response): - await session.save(request, response) - - @app.route('/') async def index(request): - rng = pd.date_range('1/1/2011', periods=7500, freq='H') - ts = pd.Series(np.random.randn(len(rng)), index=rng) + trace1 = go.Scatter( + x=[0, 1, 2, 3, 4, 5], + y=[1.5, 1, 1.3, 0.7, 0.8, 0.9] + ) + trace2 = go.Bar( + x=[0, 1, 2, 3, 4, 5], + y=[1, 0.5, 0.7, -1.2, 0.3, 0.4] + ) - graphs = [ - dict( - data=[ - dict( - x=[1, 2, 3], - y=[10, 20, 30], - type='scatter' - ), - ], - layout=dict( - title='first graph' - ) - ), - - dict( - data=[ - dict( - x=[1, 3, 5], - y=[10, 50, 30], - type='bar' - ), - ], - layout=dict( - title='second graph' - ) - ), - - dict( - data=[ - dict( - x=ts.index, # Can use the pandas data structures directly - y=ts - ) - ] - ) - ] - - # Add "ids" to each of the graphs to pass up to the client - # for templating - ids = ['graph-{}'.format(i) for i, _ in enumerate(graphs)] - - # Convert the figures to JSON - # PlotlyJSONEncoder appropriately converts pandas, datetime, etc - # objects to their JSON equivalents - graphJSON = json.dumps(graphs, cls=plotly.utils.PlotlyJSONEncoder) - - return jinja.render('index.html', request, - ids=ids, - graphJSON=graphJSON) + data = [trace1, trace2] + return html(plotly.offline.plot(data, auto_open=False, output_type='div')) if __name__ == '__main__': - app.run(host='0.0.0.0', port=8000, debug=True) \ No newline at end of file + app.run(host='0.0.0.0', port=8000, debug=True) diff --git a/examples/plotly_example/requirements.txt b/examples/plotly_example/requirements.txt index 91875907..8e1e92c2 100644 --- a/examples/plotly_example/requirements.txt +++ b/examples/plotly_example/requirements.txt @@ -1,5 +1,2 @@ -pandas==0.19.2 -plotly==2.0.7 -sanic==0.5.0 -sanic-jinja2==0.5.1 -sanic-session==0.1.3 \ No newline at end of file +plotly>=2.0.7 +sanic>=0.5.0 \ No newline at end of file diff --git a/examples/plotly_example/templates/index.html b/examples/plotly_example/templates/index.html deleted file mode 100644 index e69de29b..00000000