python - 绘制直方图未正确呈现数据
问题描述
我有一个 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)
解决方案
需要在数据变量声明中添加 histfunc="avg"。
推荐阅读
- python - 无法创建着色器缓存条目:ChromeDriver Chrome 和 Selenium 出现 -2 错误
- back-button - 如何不允许使用手机后退按钮转到上一页
- c# - 带有 IF 语句的 LINQ 排序集合
- tfs - 有没有办法用 MS VS 检查 TFS 中的特定存储过程名称?
- html - 向 HTML 表格添加排序功能
- ruby-on-rails - 如何将 Google 身份验证与 Devise gem 集成?
- javascript - 有没有办法在 Chrome 中检测 HTTP 服务器是否响应?
- c# - 是否可以在 Xamarin 项目中更改 System.Runtime 的版本?
- ios - 脉冲动画效果到 MGLCircleStyleLayer Mapbox ios
- jenkins - 我在詹金斯有两个工作,我想同时执行这两个工作