带有 Plotly express 的 Plotly Dash 甘特图

问题描述

我正在尝试创建一个甘特图,以显示间的生产计划。我想在时间线中查看每个产品的开始时间、完成时间、产品名称以及哪个工人正在处理该产品。我创建了一个包含 5 列和 71 行的数据框。行数可能更大,但列数是恒定的。 Dash 是否支持使用 Plotly Express 时间线 (px.timeline) 创建的甘特图?在我的情况下,Dash 中的图表表示不正确。显示不同进程的条被合并。当我尝试在内核中显示图表或仅作为没有 Dash 的单独 html 页面显示图表时,图表会正确表示。此外,图表中的时间线也不同。 我尝试设置图表的大小并将配置设置为 autosizable,但没有帮助。图表没有变化。我尝试使用 Plotly 文档 (https://plotly.com/python/gantt/#use-a-pandas-dataframe) 中的示例代码效果很好。您知道如何解决吗?

先谢谢你!

数据框

               Finish    Location               Start    Worker
0   2021-04-06 0:01:40   STATION-1  2021-04-06 0:00:00  WORKER-1
1   2021-04-06 0:00:40   STATION-6  2021-04-06 0:00:30  WORKER-3
2   2021-04-06 0:11:40   STATION-2  2021-04-06 0:01:40  WORKER-2
3   2021-04-06 0:04:00   STATION-5  2021-04-06 0:02:20  WORKER-1
4   2021-04-06 0:06:20   STATION-1  2021-04-06 0:04:40  WORKER-1
5   2021-04-06 0:10:00   STATION-1  2021-04-06 0:08:20  WORKER-3
6   2021-04-06 0:22:00   STATION-3  2021-04-06 0:10:00  WORKER-1
7   2021-04-06 0:20:00   STATION-2  2021-04-06 0:11:40  WORKER-3
8   2021-04-06 0:13:50   STATION-6  2021-04-06 0:13:40  WORKER-2
9   2021-04-06 0:22:20   STATION-7  2021-04-06 0:14:00  WORKER-2
10  2021-04-06 0:25:20   STATION-4  2021-04-06 0:20:20  WORKER-3
...

图表代码

# Gantt chart for workers
events_workers.sort_values(by=['Worker'],ascending=True,inplace=True)
# events_workers.sort_values('location_num')
fig_workers = px.timeline(events_workers,x_start="Start",x_end="Finish",y="Location",color="Worker",title="Workers schedule")
fig_workers.update_yaxes(autorange="reversed")
fig_workers.update_yaxes(type='category')
fig_workers.update_yaxes(categoryorder='array')
fig_workers.update_yaxes(categoryarray=df_mapping)
fig_workers.update_xaxes(tickformat="%H:%M:%s")
fig_workers.update_layout(xaxis=dict(showline=True,showgrid=True,showticklabels=True,ticks='outside'),yaxis=dict(showline=True,ticks='outside'))
fig_workers.show()
import dash
from jupyter_dash import JupyterDash
import dash_html_components as html
import dash_core_components as dcc
import plotly.express as px
import pandas as pd

external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']

app=JupyterDash(__name__,external_stylesheets=external_stylesheets)

app.layout=html.Div([
    dcc.Graph(
            id='gantt-workers',figure=fig_workers,#       style={'width': '2000px','height':'2000px'},#       config={'autosizable':True}
        ),])

app.run_server(mode="jupyterlab",port=8002)

Gantt chart in Dash

Gantt chart in Jupyter Notebook kernel

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)