Easy charts in python app with plotly
An example how to add a chart to Flask app with plotly library:
def get_chart_data():
return mongo_db['item'].aggregate([
{'$sort': {'date': 1}},
{'$group': {
'_id': {'year': {'$year': '$date'}, 'month': {'$month': '$date'}},
'num': {'$sum': 1}
}},
{'$project': {
'date': {'$dateFromParts' : {'year': '$_id.year', 'month': '$_id.month'}},
'num': '$num'
}},
{'$sort': {'date': 1}}
])
def get_chart():
data = list(get_chart_data())
layout = plotly.graph_objs.Layout(title='Items by month')
scatter_data = [
plotly.graph_objs.Scatter(
x=[d['date'] for d in data],
y=[d['num'] for d in data]
)
]
fig = plotly.graph_objs.Figure(data=scatter_data, layout=layout)
return plotly.offline.plot(fig, include_plotlyjs=True, output_type='div')
@route('/chart')
def chart():
return render_template('chart.html', chart=get_chart())
Jinja template:
{{ chart|safe }}
For jupyter notebook it will be:
from plotly.offline import init_notebook_mode, iplot
init_notebook_mode(connected=True)
iplot(get_chart())