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 1.0.0). However, the extendData
for this component has been modified to follow an api that matches the format of figure['data']
(as opposed to the api defined Graph.extendData
and Plotly.extendTraces()
).
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
- 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 Distributions
Hashes for dash_extendable_graph-1.0.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1ae7ba6b1f86a70c95edebc9d18ff7c0d16afa741b24953038a485aae0ae3a19 |
|
MD5 | 18b072648301308a630bf36f4c2ac174 |
|
BLAKE2b-256 | 5237c1279184c1843b5b850b2b043c3a8871a4b51438581c097ba037816b1f2e |
Hashes for dash_extendable_graph-1.0.0-py3.7.egg
Algorithm | Hash digest | |
---|---|---|
SHA256 | 767061a2cdca79a647c441ca5d9fb4714c29f33063ad232f668caf493cdb9a37 |
|
MD5 | d68e47893a4f5c7609c2f46a98a69f2c |
|
BLAKE2b-256 | 76421f21f83e0f1ac39cfbde1f83c20a3e2e0a1e682f689707511e7a2233a593 |
Hashes for dash_extendable_graph-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7fdef7a8484f2969e7b6b8977265f6969e92923b6b2d64f398d784c8a3e7f4a6 |
|
MD5 | 8ec9acab5227d99dc0e6418e57575211 |
|
BLAKE2b-256 | fac49ffdb86cc2aabe4e36e0b1d2af933efbd203d70e23a15fb8b892aa8474a8 |