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.47.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.4.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | ce6fb1f79ffe7e53640c66838a1261b5858ac3918ae7bb3cdb9b0028a3d63392 |
|
MD5 | aab2f822b5ccdf1fea7276cc0e65d766 |
|
BLAKE2b-256 | 97da02a98d2c29846b5fb7d7311e9f0a81d5f4d63e2ff4fb71f39a588fd956ac |
Hashes for dash_extendable_graph-0.2.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7e53f1a7f2f23897a8ae8a45a92e0eab4e947363b61da9ce8d2e80dc7beb0c23 |
|
MD5 | 78c9f94b435deb8149624e4d143a4734 |
|
BLAKE2b-256 | 1d5c54cc0319771968defc2b676d45d74ca3d6b26ecb9566ab499c3f0af75152 |