I’ve tried creating a Timeline from plotly express (which is equivalent of Gantt from plotly.graph_objects lib) and it worked great for a period of time. Suddenly its appearences became kinda flawed: some bars representing different tasks started to differ in width. 3 bacame wider, while the rest 2 stayed the same.
Example:
I cannot find the cause of this bug.
Here is method that prepares the chart:
fig = px.timeline(
self.data,
x_start="Start",
x_end="End",
y="Slot",
color="Status",
hover_name="Order",
range_x=[timezone.now(), timezone.now() + timedelta(days=3)],
)
fig.update_yaxes(autorange="reversed", dtick=1)
Also generated chart:
Figure({
'data': [{'alignmentgroup': 'True',
'base': array([NaT, NaT, NaT, NaT, NaT, NaT, NaT, NaT, NaT, NaT, NaT, NaT, NaT],
dtype=object),
'hovertemplate': 'Status=<br>Start=%{base}<br>End=%{x}<br>Slot=%{y}<extra></extra>',
'legendgroup': '',
'marker': {'color': '#636efa'},
'name': '',
'offsetgroup': '',
'orientation': 'h',
'showlegend': False,
'textposition': 'auto',
'type': 'bar',
'x': array([nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan]),
'xaxis': 'x',
'y': array([ 1, 2, 3, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16]),
'yaxis': 'y'},
{'alignmentgroup': 'True',
'base': array([datetime.datetime(2020, 8, 26, 18, 0)], dtype=object),
'hovertemplate': 'Status=Missing<br>Start=%{base}<br>End=%{x}<br>Slot=%{y}<extra></extra>',
'legendgroup': 'Missing',
'marker': {'color': '#EF553B'},
'name': 'Missing',
'offsetgroup': 'Missing',
'orientation': 'h',
'showlegend': True,
'textposition': 'auto',
'type': 'bar',
'x': array([3540000.]),
'xaxis': 'x',
'y': array([7]),
'yaxis': 'y'},
{'alignmentgroup': 'True',
'base': array([datetime.datetime(2020, 8, 26, 18, 0),
datetime.datetime(2020, 8, 26, 18, 0)], dtype=object),
'hovertemplate': 'Status=Loaded<br>Start=%{base}<br>End=%{x}<br>Slot=%{y}<extra></extra>',
'legendgroup': 'Loaded',
'marker': {'color': '#00cc96'},
'name': 'Loaded',
'offsetgroup': 'Loaded',
'orientation': 'h',
'showlegend': True,
'textposition': 'auto',
'type': 'bar',
'x': array([3540000., 3540000.]),
'xaxis': 'x',
'y': array([ 8, 10]),
'yaxis': 'y'},
{'alignmentgroup': 'True',
'base': array([datetime.datetime(2020, 8, 26, 18, 59),
datetime.datetime(2020, 8, 27, 18, 59),
datetime.datetime(2020, 8, 26, 18, 59)], dtype=object),
'hovertemplate': ('Status=Potentially Overdue<br>' ... 'x}<br>Slot=%{y}<extra></extra>'),
'legendgroup': 'Potentially Overdue',
'marker': {'color': '#ab63fa'},
'name': 'Potentially Overdue',
'offsetgroup': 'Potentially Overdue',
'orientation': 'h',
'showlegend': True,
'textposition': 'auto',
'type': 'bar',
'x': array([2.41441525e+08, 1.55041525e+08, 8.28600000e+07]),
'xaxis': 'x',
'y': array([ 8, 10, 10]),
'yaxis': 'y'},
{'alignmentgroup': 'True',
'base': array([datetime.datetime(2020, 8, 27, 18, 0)], dtype=object),
'hovertemplate': 'Status=Reserved<br>Start=%{base}<br>End=%{x}<br>Slot=%{y}<extra></extra>',
'legendgroup': 'Reserved',
'marker': {'color': '#FFA15A'},
'name': 'Reserved',
'offsetgroup': 'Reserved',
'orientation': 'h',
'showlegend': True,
'textposition': 'auto',
'type': 'bar',
'x': array([3540000.]),
'xaxis': 'x',
'y': array([10]),
'yaxis': 'y'}],
'layout': {'barmode': 'overlay',
'height': 470,
'legend': {'title': {'text': 'Status'}, 'tracegroupgap': 0},
'margin': {'t': 60},
'template': '...',
'xaxis': {'anchor': 'y',
'domain': [0.0, 1.0],
'range': [2020-08-26 14:03:01.561634+00:00, 2020-08-29
14:03:01.561639+00:00],
'type': 'date'},
'yaxis': {'anchor': 'x',
'autorange': 'reversed',
'domain': [0.0, 1.0],
'dtick': 1,
'title': {'text': 'Slot'}}}
})
Any help will be appreciated