【问题标题】:How to remove gaps between consecutive and adjacent dates in plotly.express.timeline?如何消除 plotly.express.timeline 中连续日期和相邻日期之间的间隔?
【发布时间】:2021-11-03 09:08:32
【问题描述】:

在我的 Python 脚本中,我通过 dateutil.parser 收集两个时间段的日期时间对象,如下所示:

from dateutil import parser

start_date_1 = parser.parse("2010-08-01").date()
end_date_1 = parser.parse("2010-11-05").date()
start_date_2 = parser.parse("2010-11-06").date()
end_date_2 = parser.parse("2010-11-12").date()

当尝试使用 plotly.express.timeline 可视化这些时间段时,连续日期和直接相邻日期(2010-11-05 和 2010-11-06)之间存在间隔。有什么方法可以在不重叠日期的情况下加入这两个栏?

df = pd.DataFrame([
        dict(Task="period_1", Start=start_date_1, Finish=end_date_1, Stack="stack_2"),
        dict(Task="period_2", Start=start_date_2, Finish=end_date_2, Stack="stack_2"),
    ])
    
fig = px.timeline(df,
                x_start="Start",
                x_end="Finish",
                y="Stack",
                color="Task",
                hover_name="Task",
                opacity=.7,
                width=1000)

    fig.update_traces(marker_line_width=1.0, opacity=0.95)

    fig.update_layout(
        barmode="overlay",
        xaxis = dict(
            automargin=True,
            dtick="M1",
            tickformat="%Y-%m-%d",
            type="date",
            showgrid=True,
            rangeslider_visible=True),
        
        yaxis = dict(
            automargin=True,
            visible=False,
            autorange="reversed",
            showgrid=True),
        
        legend=dict(
        title=""))

【问题讨论】:

  • 我尝试了很多东西,我认为这是默认行为。

标签: python plotly-python plotly-express


【解决方案1】:

当给 plotly 一个日期范围时,第二个索引将是独占的。 (即,您正在创建一个高达 2010-11-05 的栏,但不包括它。要解决此问题,请为每个端点添加 1 天。

start_date_1 = parser.parse("2010-08-01").date()
end_date_1 = parser.parse("2010-11-06").date()
start_date_2 = parser.parse("2010-11-06").date()
end_date_2 = parser.parse("2010-11-13").date()

【讨论】:

  • 感谢您抽出宝贵时间回答。但是,在我看来,这会伪造基础数据以实现准确的视觉表示,这会在我的脚本中引入一组全新的问题。如果我在将日期范围添加到 plotly 之前添加 1 天,它还会更改悬停时显示的数据,这对我的用例非常重要。
  • 您可以将 X 值设置为(日期 + 1 天),并将 hover_info 设置为您的原始日期。
猜你喜欢
  • 1970-01-01
  • 2022-11-25
  • 1970-01-01
  • 2012-10-12
  • 2016-09-17
  • 1970-01-01
  • 2012-04-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多