首页 > 解决方案 > 绘制直方图未正确呈现数据

问题描述

我有一个 csv,我正在尝试创建一个 in plotly 的直方图。csv 包含一个日期字段(以小时为单位)、一个用户计数字段和一个平均连接时间字段。我正在尝试使用以下代码片段随时间绘制用户计数字段值。如代码所示,我还尝试根据用户从下拉菜单中选择的时间范围重新分发 xbin。

不幸的是,生成的图表似乎不正确,因为它每天返回值 1 或 4。这与 csv 本身不一致,它每小时有各种用户#s。

我假设问题是我修改垃圾箱/聚合的方式,但我似乎无法弄清楚到底是什么问题。任何帮助表示赞赏。

直方图: 最终图表

代码片段:

    df['END TIME'] = pd.to_datetime(df['END TIME'])
    df['END TIME'] = df['END TIME'].dt.round('H')
    df.to_csv(r"C:\temp\test.csv")
    data = [dict(
        x=df['END TIME'],
        y=df['USER COUNT'],
        autobinx=False,
        autobiny=True,
        marker=dict(color='rgb(68, 68, 68)'),
        name='date',
        type='histogram',
        xbins=dict(
            end= df['END TIME'].max(),
            size='3600000',
            start=df['END TIME'].min()
        )
    )]

    layout = dict(
        paper_bgcolor='rgb(240, 240, 240)',
        plot_bgcolor='rgb(240, 240, 240)',
        title='<b>User Count</b>',
        xaxis=dict(
            title='',
            type='date'
        ),
        yaxis=dict(
            title='User Count',
            type='linear'
        ),
        updatemenus=[dict(
            x=0.1,
            y=1.15,
            xref='paper',
            yref='paper',
            yanchor='top',
            active=1,
            showactive=True,
            buttons=[
                dict(
                    args=['xbins.size', '3600000'],
                    label='Hour',
                    method='restyle',
                ), dict(
                    args=['xbins.size', 'D1'],
                    label='Day',
                    method='restyle',
                ), dict(
                    args=['xbins.size', 'M1'],
                    label='Month',
                    method='restyle',
                ), dict(
                    args=['xbins.size', 'M3'],
                    label='Quarter',
                    method='restyle',
                ), dict(
                    args=['xbins.size', 'M6'],
                    label='Half Year',
                    method='restyle',
                ), dict(
                    args=['xbins.size', 'M12'],
                    label='Year',
                    method='restyle',
                )]
        )]
    )

    fig_dict = dict(data=data, layout=layout)
    pio.show(fig_dict, validate=False)

标签: pythonplotlyaggregationbins

解决方案


需要在数据变量声明中添加 histfunc="avg"。


推荐阅读