Skip to main content

A tooltip functionality for Dash.

Project description

Dash Tooltip

A module to add interactive editable tooltips to your Dash applications. Inspired by mplcursors and Matlab's datatip.

newplot(6)

Installation

You can download the dash_tooltip.py module and place it in your working directory.

Basic Usage

import numpy as np
import plotly.express as px
from dash import Dash, dcc, html
from dash.dependencies import Input, Output
from dash_tooltip import tooltip

# Sample Data
np.random.seed(20)
y1 = np.random.normal(0, 10, 50)
x1 = np.arange(0, 50)
fig1 = px.scatter(x=x1, y=y1)
fig1.update_layout(title_text="Editable Title", title_x=0.5)

app1 = Dash(__name__)

#makes graph items, including tooltips editable
app1.layout = html.Div([
    dcc.Graph(
        id='graph1',
        figure=fig1,
        config={
            'editable': True,
            'edits': {
                'shapePosition': True,
                'annotationPosition': True
            }
        }
    )
])

# Add the tooltip functionality to the app
tooltip(app1)

Click on data points to add tooltips. If dcc.Graph is configured editatble, tolltips:

  • can be dragged around
  • text can be edited on click
  • can be deleted: click, delete text, enter. In some occasions a tooltip arrow may remain due to a Dash bug (clientside_callback not firing). In this cas, click near arrow end (mouse cursor changes to pointer), enter some text and repeat deletion and enter.

Advanced Usage

If you want to customize the tooltips, hover templates, and more:

import pandas as pd
import numpy as np
import plotly.express as px
from dash import Dash, dcc, html
from dash.dependencies import Input, Output
from dash_tooltip import tooltip

# Generate random time series data
date_rng = pd.date_range(start='2020-01-01', end='2020-12-31', freq='h')
ts1 = pd.Series(np.random.randn(len(date_rng)), index=date_rng)
ts2 = pd.Series(np.random.randn(len(date_rng)), index=date_rng)
df = pd.DataFrame({'Time Series 1': ts1, 'Time Series 2': ts2})

template = "x: %{x}<br>y: %{y}<br>ID: %{pointNumber}<br>name: %{customdata[0]}<br>unit: %{customdata[1]}"
fig10 = px.line(df, x=df.index, y=df.columns, title="Time Series Plot")

for i, trace in enumerate(fig10.data):
    trace.customdata = np.column_stack((np.repeat(df.columns[i], len(df)), np.repeat('#{}'.format(i+1), len(df))))
    trace.hovertemplate = template

app10 = Dash(__name__)

app10.layout = html.Div([
    dcc.Graph(
        id="graph-id",
        figure=fig10,
        config={
            'editable': True,
            'edits': {
                'shapePosition': True,
                'annotationPosition': True
            }
        }
    )
])

tooltip(app10, graph_ids=["graph-id"], template=template, debug=True)

Custom Styling

custom_config = {
    'text_color': 'red',
    'arrow_color': 'blue',
    'arrow_size': 2.5,
    # ... any other customization
}
tooltip(app10, graph_ids=["graph-id"], template=template, debug=True, **custom_config)

For more examples, refer to the provided dash_tooltip_demo.py or its Jupyter counterpart dash_tooltip_demo.ipynb.

Debugging

If you encounter any issues or unexpected behaviors, enable the debug mode by setting the debug argument of the tooltip function to True. The log outputs will be written to dash_app.log in the directory where your script or application is located.

License

This project is licensed under the MIT License. See the LICENSE file for details.

Acknowledgements

  • Inspired by mplcursors and Matlab's datatip.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Dash_tooltip-0.3.1.tar.gz (23.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

Dash_tooltip-0.3.1-py3-none-any.whl (24.5 kB view details)

Uploaded Python 3

File details

Details for the file Dash_tooltip-0.3.1.tar.gz.

File metadata

  • Download URL: Dash_tooltip-0.3.1.tar.gz
  • Upload date:
  • Size: 23.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for Dash_tooltip-0.3.1.tar.gz
Algorithm Hash digest
SHA256 38b2261c4c8f3dd3bedec2e4b5d2648cc40a6d14d03793655ce20be7c700e904
MD5 8a5d4b790350c564b74a32598f542bc8
BLAKE2b-256 6d6afb87d0be7000e62c33e68e395e6cd4b29a89f7f12e772d4d37ec0d6dbe3a

See more details on using hashes here.

File details

Details for the file Dash_tooltip-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: Dash_tooltip-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 24.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for Dash_tooltip-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9e6c6413dd158e90b986391eac740a356426af489504bf01c77bb51f9068a962
MD5 5f4966f4e4132ce73db85122e22ded39
BLAKE2b-256 5103ba8fefbb5a7dc2bd3f116c5473a8e03cd5c79f1cb045423bf174fe73df09

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page