问题描述
我正在尝试创建一个甘特图,以显示车间的生产计划。我想在时间线中查看每个产品的开始时间、完成时间、产品名称以及哪个工人正在处理该产品。我创建了一个包含 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 Jupyter Notebook kernel
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)