Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python Dash Plotly: Show default closest data on hover or compare data on hover in graph

I'm building a simple app using Dash Plotly.
The default setting is that the graph 'Compares data on hover'.
enter image description here

I want to change the default setting to 'Show closest data on hover': enter image description here

How can this be done in the code below?

import dash
import dash_core_components as dcc
import dash_html_components as html

app = dash.Dash(__name__)

app.layout = html.Div(children=[
    html.H1(children='Hello New Other Change', ),

    html.Div(children='''
        Dash: A web application framework for Python.
    '''),

    dcc.Graph(
        id='example-graph',
        figure={
            'data': [
                {'x': [1, 2, 3], 'y': [4, 1, 2], 'type': 'bar', 'name': 'SF'},
                {'x': [1, 2, 3], 'y': [2, 4, 5], 'type': 'bar', 'name': u'Montréal'},
            ],
            'layout': {
                'title': 'Dash Data Visualization',
            }
        }
    )
])

if __name__ == '__main__':
    app.run_server(debug=True)
like image 570
Sander van den Oord Avatar asked Jan 09 '19 10:01

Sander van den Oord


Video Answer


2 Answers

Setting your graph default to showing closest data in plotly dash can be done by adding hovermode to the figure, as follows:

figure={
    'data': [
        {'x': [1, 2, 3], 'y': [4, 1, 2], 'type': 'bar', 'name': 'SF'},
        {'x': [1, 2, 3], 'y': [2, 4, 5], 'type': 'bar', 'name': u'Montréal'},
    ],
    'layout': {
        'hovermode': 'closest',
    }
}

Setting your graph default to compare data is done by:

'layout': {
    'hovermode': 'compare',
}
like image 138
Sander van den Oord Avatar answered Sep 20 '22 18:09

Sander van den Oord


Update to Sander van den Oord's answer, at least as of dash 1.0.2:

layout.hovermode = 'closest' # for "Show closest data on hover"
layout.hovermode = 'x' # for "Compare data on hover"

Other options include:

layout.hovermode = 'y' # similar to x but switches tags accordingly
layout.hovermode = False # nothing shown on hover
like image 29
dmbhatti Avatar answered Sep 21 '22 18:09

dmbhatti