我正在try 使用DASH+PLATLY来创建一个水平时间线图表. 几个参与者在某些时间段使用共享资源. 我想用单杠形象地展示每个演员的工作过程. 但在每个水平条上悬停时,我希望看到这位演员在这个时间段正在处理的资源.
例如:
演员1从08:00:00到10:30:00处理资源1 演员2从10:00:00到10:40:00处理资源1 演员1在10:31:00至11:00:00处理资源2 演员3:09:15:00至10:15:00处理资源3
我在下面的数据示例中表示了它:
data_sample = {
'Actor': ['actor1', 'actor2', 'actor1', 'actor3'],
'Start Time': ['08:00:00', '10:00:00', '10:31:00', '09:15:00'],
'End Time': ['10:30:00', '10:40:00', '11:00:00', '10:15:00'],
'Resource': ['resource1', 'resource1', 'resource2', 'resource3']
}
df = pd.DataFrame(data_sample)
df['Start Time'] = pd.to_datetime(df['Start Time'])
df['End Time'] = pd.to_datetime(df['End Time'])
并试图通过以下方式将其可视化:
fig = px.timeline(df, x_start='Start Time', x_end='End Time', y='Actor', color='Actor')
fig.update_traces(hovertemplate='Resource: %{customdata}<br>' +
'Start Time: %{base}<br>' +
'End Time: %{x}<br>',
customdata=df['Resource'])
app.layout = html.Div([dcc.Graph(figure=fig)])
我能看到一幅很漂亮的图画.我偶然注意到的唯一一个问题,并能弄清楚如何处理它,它徘徊在错误的.例如,图中显示Actor 3正在资源1上工作,但不在资源3上. 对于每个参与者,UPDATE_TRACE中的定制数据似乎都是从头开始的. 但我需要它与《演员》帧的适当索引相匹配.
我该怎么处理呢?也许我可以准备另一种格式的数据?或者使用另一种类型的图表?