Plotly 中的 px.timeline 和 make_subplots 问题 - 条形图跨子图分割

问题描述 投票:0回答:1

我目前正在使用 Plotly,特别是使用 px.timeline 为不同的组创建水平时间线栏,并用不同的颜色代表其状态。目标是使用 make_subplots 垂直排列多个图形。单个条形图应如下所示:

import pandas as pd
import plotly.express as px

data = [
    [True, '2016-11-28 00:06:00.000000', '2016-11-28 00:10:00.000000', 'Lamp'],
    [False, '2016-11-28 00:10:00.000000', '2016-11-28 00:14:00.000000', 'Lamp'],
    [True, '2016-11-28 00:14:00.000000', '2016-11-28 00:18:00.000000', 'Lamp']
]

columns = ['status', 'start', 'end', 'group']
df = pd.DataFrame(data, columns=columns)

df['start'] = pd.to_datetime(df['start'])
df['end'] = pd.to_datetime(df['end'])

fig = px.timeline(df, x_start='start', x_end='end', y="group", color="status")
fig.show()

当我使用 px.timeline 创建单独的图形,然后使用 make_subplots 将它们组合起来时,我的问题就开始了,每个子图中的条形图被分成多个条形图,而不是显示为每个组的单个水平条形图。子图如下所示:

from plotly.subplots import make_subplots

subfig = make_subplots(rows=2, cols=1)

fig = px.timeline(df, x_start='start', x_end='end', y="group", color="status", template="plotly")
fig2 = px.timeline(df, x_start='start', x_end='end', y="group", color="status", template="plotly")

subfig.add_traces(fig.data, rows=1, cols=1)
subfig.add_traces(fig2.data, rows=2, cols=1)

subfig.update_xaxes(type='date')

subfig.show()

预期的输出应该像第一张图片中那样,只有两次。我找不到使用 make_subplots 时子图被分割的解决方案。

到目前为止我已经尝试过

  • 从 px.timeline 中删除“color='status'”,这解决了分割问题,但我以后无法添加颜色。
  • 在 make_sublots 中使用 add_trace() 而不是 add_traces() 但我只能显示 True 或 False 值,而不是两者。

我将非常感谢使用plotly.express和make_subplots的解决方案,或者推荐其他可以实现这种形式的绘图的库。

time-series plotly visualization plotly-express
1个回答
0
投票

您可以使用以下方法更新布局:

subfig.update_layout(barmode="overlay")
© www.soinside.com 2019 - 2024. All rights reserved.