按日和月而不按周的Python直方图分类箱

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

我正在跟踪此处的示例:https://plot.ly/python/aggregations/#histogram-binning

他们拥有的代码可以正常工作,但是我正在尝试将其扩展为按周以及按日,按月等方式自动合并。我知道此数据集没有时间,但是我也想对自己的数据进行分类一组时间也使用小时的数据。看起来这很简单,但是此代码无法产生正确的结果:

import plotly.io as pio

import pandas as pd

df = pd.read_csv("https://plot.ly/~public.health/17.csv")

data = [dict(
  x = df['date'],
  autobinx = False,
  autobiny = True,
  marker = dict(color = 'rgb(68, 68, 68)'),
  name = 'date',
  type = 'histogram',
  xbins = dict(
    end = '2016-12-31 12:00',
    size = 'M1',
    start = '1983-12-31 12:00'
  )
)]

layout = dict(
  paper_bgcolor = 'rgb(240, 240, 240)',
  plot_bgcolor = 'rgb(240, 240, 240)',
  title = '<b>Shooting Incidents</b>',
  xaxis = dict(
    title = '',
    type = 'date'
  ),
  yaxis = dict(
    title = 'Shootings Incidents',
    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', 'D1'],
            label = 'Day',
            method = 'restyle',
        ), dict(
            args = ['xbins.size', 'D7'],
            label = 'Week',
            method = 'restyle',
        ), dict(
            args = ['xbins.size', 'M1'],
            label = 'Month',
            method = 'restyle',
        ), dict(
            args = ['xbins.size', 'M3'],
            label = 'Quater',
            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)

有人知道如何按周获取垃圾箱(以及按小时获取假定垃圾箱吗?谢谢!

python pandas plotly
1个回答
0
投票

我想出了如何去做我想做的事情。答案被埋在此处找到的Plot.ly文档中:https://plot.ly/python/reference/

特别是在xbins.size下,它们指的是在axis.dtick中遵循相同的方案。这是具有答案的axis.dtick文档:

dtick父级:data [type = histogram] .marker.colorbar类型:数字或分类坐标字符串

设置此轴上刻度之间的步长。与tick0一起使用。必须为正数,或对“ log”和“ date”轴可用的特殊字符串。如果轴type是“ log”,则每10 ^(n“ dtick)设置刻度,其中n是刻度号。例如,将刻度标记设置为1、10、100、1000,...将dtick设置为1。要将刻度线设置为1、100、10000,...,将dtick设置为2。要将刻度线设置为1、5、25、125、625、3125,...将dtick设置为log_10(5 )或0.69897000433。“ log”具有几个特殊值;“ L”(其中f是一个正数)给出刻度线的值线性间隔(但不包括位置),例如tick0 = 0.1,dtick =要显示10的幂以及小数位之间的幂,请使用“ D1”(所有数字)或“ D2”(仅2和5)。 如果轴tick0是“ date”,则必须将时间转换为毫秒。例如,要将刻度之间的间隔设置为一天,请设置type到86400000.0。“日期”也有特殊值“ M”表示滴答号间隔了数月。dtick必须为正整数。要在每三个月的15号设置滴答声,请将n设置为“ 2000- 01-15“和tick0至“ M3”。要每4年设置一次刻度,请将dtick设置为“ M48”

因此,用于bin大小调整的新代码段是:

dtick

但是考虑到这一点,我会怀疑使用“ D1”也不可行。如果在Plot.ly工作的任何人都看到了这一点,您是否可以记下更新示例以指出此特定细微差别?

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