plotly-dash custom component. Adds Plotly.extendTraces() support to dash_core_components.Graph()
Project description
dash-extendable-graph
dash-extendable-graph is a Dash component library. This library contains a single component: ExtendableGraph
. The component is a fork of the Graph() component of dash-core-components (v 0.46.0), with an extra property (extendData
) that allows Graph traces to be drawn through Plotly.extendTraces()
instead of Plotly.react()
.
Note: plotly.js is required. However, the library is NOT explicitly listed in MANIFEST.in
or in dash_extendable_graph\__init__.py
as a way to reduce bundle size. Plotly.js is already distributed with the dash-core-components package, and most projects will import dcc as well as dash-extendable-graph.
Installation
Get started with:
- Install Dash and dependencies: https://dash.plot.ly/installation
$ pip install -r requirements.txt
- Install dash-extendable-graph
$ pip install dash-extendable-graph
- Run
python usage.py
- Visit http://localhost:8050 in your web browser
Usage
General examples may be found in usage.py
extendData keys
updateData
[list]: a list of dictionaries, each containing representing trace data (e.gdict(x=[1], y=[1])
)traceIndices
[list, optional]: identify the traces that should be extended. If the specified trace index does not exist, the corresponding trace shall be appended to the figure.maxPoints
[number, optional]: define the maximum number of points to plot in the figure (per trace).
Based on the Plotly.extendTraces()
api.
Code
Extend a trace once per second, limited to 100 maximum points.
import dash_extendable_graph as deg
import dash
from dash.dependencies import Input, Output, State
import dash_html_components as html
import dash_core_components as dcc
import random
app = dash.Dash(__name__)
app.scripts.config.serve_locally = True
app.css.config.serve_locally = True
app.layout = html.Div([
deg.ExtendableGraph(
id='extendablegraph_example',
figure=dict(
data=[{'x': [0],
'y': [0],
'mode':'lines+markers'
}],
)
),
dcc.Interval(
id='interval_extendablegraph_update',
interval=1000,
n_intervals=0,
max_intervals=-1),
html.Div(id='output')
])
@app.callback(Output('extendablegraph_example', 'extendData'),
[Input('interval_extendablegraph_update', 'n_intervals')],
[State('extendablegraph_example', 'figure')])
def update_extendData(n_intervals, existing):
x_new = existing['data'][0]['x'][-1] + 1
y_new = random.random()
return [dict(x=[x_new], y=[y_new])], [0], 100
if __name__ == '__main__':
app.run_server(debug=True)
Contributing
See CONTRIBUTING.md
Local Installation
- Dependencies
$ npm install
$ virtualenv venv
$ . venv/bin/activate
$ pip install -r requirements.txt
$ pip install -r tests/requirements.txt
- Build
$ npm run build:all
- Check out the component via component-playground
$ npm run start
The demo app is in `src/demo`
- Check out the sample Dash application using the component
$ python setup.py install
$ python usage.py
Tests
- Run the tests with
$pytest tests
Create a production build and publish:
$ npm run build
$ rm -rf dist
$ python setup.py sdist bdist_wheel
$ twine upload dist/*
$ npm publish
Test your tarball by copying it into a new environment and installing it locally:
$ pip install dash_extendable_graph-X.X.X.tar.gz
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for dash_extendable_graph-0.2.3.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5a5f92f1fe6206165b1a27a289f80ec5a799fee3b6687bd5c2c816eadeb42945 |
|
MD5 | e58b3645dc978918d2d02e1cd9e045fd |
|
BLAKE2b-256 | 273e5dfe69bf6e2f5c8cbfd5047b9710627b1966ce81740fec263b6c76a76dc1 |
Hashes for dash_extendable_graph-0.2.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 63d9416d816eb21441100ec02e712b23ad5dfd50cfc1c2e5f171f80f6124407f |
|
MD5 | 0faf74612de04dfb979cc07e3c0daab1 |
|
BLAKE2b-256 | 628820495bfc60baf2e500155d062925c4008e0b1bcfac3c45d734a61205b8e7 |