Histogram的作用是将数据分为几个阶段,然后统计每个阶段的数据个数。
比如有一组数据[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
如果使用Histogram展示,默认将数据分为三个阶段,也就是0-40,50-90,100-140,然后统计出每个阶段有多少条数据,当然,这个具体是计数还是求和,可以通过属性设置的
- visible : 是否显示直方图,默认True;
- showlegend : 是否显示右边的小标签说明,默认True;
- opacity : 设置透明度,默认1;
- name : 设置直方图的名称,string;
- hoverinfo : 设置浮标显示内容,可以是‘x’、‘y’、‘z’、‘text’、‘name’,也可以是任意组合,默认‘all’;
- hoverlabel : 设置浮标的显示风格,可以设置颜色、大小、对齐方式、name长度限制等等;
- x : 设置x轴方向的数据,这里x和y请选择其中一个,这是自动统计的,所以只需要一个设置数据就好,类型是数组;(必要,x和y任选一个)
- y : 设置y轴方向的数据,x和y任选一个,类型是数组;(必要,x和y任选一个)
- text : 设置浮标上显示的text内容,可以是固定字符串,也可以是一个字符串数组;
- hovertext : 设置浮标上显示的text内容,同上面的text,如果有hovertext,那么text不起作用;
- histfunc :设置直方图每个阶段使用的方法,默认是‘count’,也就是计数,可以是‘sum’求和、‘svg’平均值、‘min’最小值、‘max’最大值;(目前这个没试出来,不知道为啥没起作用)
- histnorm : 设置直方图每个阶段统计的显示方式,默认是空,就是计数,可以是‘percent’百分比,‘probability’占比,‘density’密度;
- nbinsx : 设置阶段数量,不设置是它自己分配多少个阶段,如果这里设置了10个阶段,那么上面就会变成每个都是一个;(重要)
- xbins : 设置x轴阶段数量,相比较上面的更加灵活,这是一个字典,可以设置起始、终止、每个阶段大小,比如:{'start': 0, 'end': 100, 'size': 20},这么设置之后,上面的就变成5个阶段,每个阶段是20;优先级高于nbinsx (重要)
- nbinsy : 设置阶段数量,只是y轴方向的;(重要)
- ybins : 同xbins;(重要)
- bingroup : 设置每个阶段分组,string;
下面来个小示例:
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)
显示结果是这样的:
如果我设置了nbinsx为10,结果是这样的:
自动分为10个阶段了~