plotly / plotly/plotly.py

JupyterDash line shapes incorrect plotted

Open
#2,877 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug P3
Dominant language
Python
Stars
18.8k
Forks
2.8k
Avg merge
16h 26m
Merged PRs (30d)
21

Description

Plotting lines in Plotly and JupyterDash gives a problem. I don't know if the issue is related to Plotly or JupyterDash, depending on which is the expected behaviour.

It did work in a previous version of Plotly.

Versions:

dash==1.17.0
jupyter-dash==0.3.1
plotly==4.12.0

import plotly.graph_objects as go
from dash.dependencies import Input, Output
from jupyter_dash import JupyterDash

from dash.dependencies import Input, Output
import dash_core_components as dcc
import dash_html_components as html
import dash_table

x_data = [ 54135, 12346, 75492, 64135, 748612, 31548 ]

fig = go.Figure(go.Scatter(x=x_data, y=[1, 2, 3, 4, 5, 6]))
fig.update_xaxes(
        title_text='Segments',
        type='category'
)
fig.add_shape(
      dict(
        type="line",
        xref='x', yref='y',
        x0=x_data[4], x1=x_data[4],
        y0=0, y1=10,
      )
)
fig.show()

app = JupyterDash(__name__)

app.layout = html.Div([
    dcc.Graph(figure=fig)
])

app.run_server(host='0.0.0.0', port=8003)

But apparently, this gives different results in Plotly as it does in Dash.

Plotly
image

Dash
image

(The small part on the left is the zoomed-out result, because the vertical-line was plotted at 31548 (which is the class of the X_data, but Dash seems to regard is as an integer)
This only happened in the latest updates (I used to work with plotly=4.8.0 before this error)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the supplied Python reproduction and compare fig.show() with the JupyterDash app.run_server() output using the listed Plotly, Dash, and JupyterDash versions. Trace how the categorical x-axis value is interpreted for the added shape, then determine whether the discrepancy belongs to Plotly or JupyterDash. Done means the vertical line aligns with the intended category in both outputs.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
data-visualization
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.