消除图表中的缺口

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

我有下图: enter image description here

这是生成图表的 Python 代码:

def createBarChart(df):
    # Convert the columns ‘start’ and ‘end’ into datetime objects
    df['start'] = pd.to_datetime(df['start'])
    df['ende'] = pd.to_datetime(df['ende'])

    # Create Diagramm
    fig = go.Figure()

    for i, row in df.iterrows():
        fig.add_trace(go.Scatter(
            x=[row['start'], row['ende'], row['ende'], row['start']],
            y=[1, 1, 0, 0],
            fill='toself',
            fillcolor=row['color'],
            mode='none',  
            showlegend=False,

        ))

    # Formatting the x-axis
    tickvals = pd.date_range(start=df['start'].min(), end=df['ende'].max(), freq='3H')
    ticktext = []
    previous_day = None

    for d in tickvals:
        if previous_day is None or d.day != previous_day:
            ticktext.append(f"<b>{d.strftime('%d.%m')}</b>")
        else:
            ticktext.append(d.strftime('%H:%M'))
        previous_day = d.day

    fig.update_layout(
        yaxis=dict(showticklabels=False),
        xaxis=dict(
            tickformat='%H:%M',
            tickvals=tickvals,
            ticktext=ticktext
        ),
        margin=dict(l=20, r=20, t=10, b=20),
        height=200,

    )

    return fig

现在我们来解决问题了。为了显示该图表,我从 CSV 文件中读取数据。 CSV 文件中的每一行都是一个块。最后两个块是绿色的。但是,这两者之间有一条小线,我想将其删除,使其成为连续的绿色条。

python plotly
1个回答
0
投票

这是因为第二个区块的开始时间没有立即跟随

因此要消除间隙,您可以使用

    for i in range(len(df) - 1):
        if df.loc[i, 'color'] == df.loc[i + 1, 'color']:
            df.loc[i, 'ende'] = df.loc[i + 1, 'start']

这将确保当前行的结束时间与下一行的开始时间匹配

© www.soinside.com 2019 - 2024. All rights reserved.