Histogram的作用是将数据分为几个阶段,然后统计每个阶段的数据个数。

比如有一组数据[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

如果使用Histogram展示,默认将数据分为三个阶段,也就是0-40,50-90,100-140,然后统计出每个阶段有多少条数据,当然,这个具体是计数还是求和,可以通过属性设置的

- visible

- showlegend

- opacity

- name

- hoverinfo

- hoverlabel

- x : 设置x轴方向的数据,这里x和y请选择其中一个,这是自动统计的,所以只需要一个设置数据就好,类型是数组;(必要,x和y任选一个

- y : 设置y轴方向的数据,x和y任选一个,类型是数组;(必要,x和y任选一个

- text

- hovertext

- histfunc

- histnorm

- nbinsx : 设置阶段数量,不设置是它自己分配多少个阶段,如果这里设置了10个阶段,那么上面就会变成每个都是一个;(重要

- xbins : 设置x轴阶段数量,相比较上面的更加灵活,这是一个字典,可以设置起始、终止、每个阶段大小,比如:{'start': 0, 'end': 100, 'size': 20},这么设置之后,上面的就变成5个阶段,每个阶段是20;优先级高于nbinsx (重要

- nbinsy : 设置阶段数量,只是y轴方向的;(重要

- ybins : 同xbins;(重要

- bingroup

下面来个小示例:

import dash
import dash_core_components as dcc
import dash_html_components as html
import plotly.graph_objs as go


app = dash.Dash()
server = app.server


def get_show_histogram():
    scty = [
        # 10, 20, 30, 40, 50, 60, 70, 80, 90, 100
        3607, 3834, 3904, 4080, 3997,
        3999, 3956, 4106, 4371, 4401,
        4083, 3982, 3940, 3825, 3799,
        3935, 4187, 4037, 3844, 3862,
    ]
    trace = go.Histogram(
        x=scty,
        # histfunc='sum',
        # histnorm='probability',
        # hoverinfo='text',
        # text='数量',
        # hovertext='总计',
        # y=scty, 
        # nbinsx=10,
        # xbins={
        #     'start': 0,
        #     'end': 100,
        #     'size': 20
        # },
        # name='新用户',
        # visible=False
        # showlegend=False
        # legendgroup='group1'
    )
    layout = go.Layout(
        title='活跃用户',
        # yaxis={
        #     'hoverformat': '.2%',
        # }
    )
    return go.Figure(
        data=[trace],
        layout=layout
    )


app.layout = html.Div([
    dcc.Graph(
        id='show_scatter',
        figure=get_show_histogram()
    ),
], style={'margin': 100})

if __name__ == '__main__':
    app.run_server(debug=True)

显示结果是这样的:

python中hist函数bins的意义 python中histogram函数用法_直方图

如果我设置了nbinsx为10,结果是这样的:

python中hist函数bins的意义 python中histogram函数用法_Dash_02

自动分为10个阶段了~