Plotly - 直方图箱大小为周

HGL*_*GLR 6 python python-3.x plotly

我正在尝试使用plotly 绘制包含日期数据的直方图。我想用与周相对应的垃圾箱大小来绘制它,但这似乎不起作用。我搜索了有关它的文档但没有找到任何内容。

这是我的代码。我尝试过(第 5 行):“D7”和“W1”。这不起作用(情节似乎不识别争论,并将其设置为每天一个垃圾箱)。奇怪的是“M1”、“M3”等......似乎有效

fig = go.Figure(data=[go.Histogram(x=df.col, 
                                   xbins=dict(
                                       start='2018-01-01',
                                       end='2018-12-31',
                                       size='D7'), 
                                   autobinx=False)])
fig.update_layout(
    title=go.layout.Title(
        text="title",
        xref="paper",
        x=0.5
    ),
    xaxis_title_text='xaxis title',
    yaxis_title_text='yaxis title'
)


fig.show()
Run Code Online (Sandbox Code Playgroud)

有人有关于这个问题的任何信息吗?谢谢

Jak*_*ake 6

xbins.size默认以毫秒为单位指定。要获取每周垃圾箱,请设置xbins.size604800000(7 天,每天 86,400,000 毫秒)。

Plotly 提供了获取每月 bin 的格式xM,因为此用例需要在后台进行更复杂的计算,因为每月 bin 没有统一的大小。


ves*_*and 1

看来重新采样的数据源和条形图才是您真正想要的:

阴谋:

在此输入图像描述

在这里,基于每日观察的源数据DatetimeIndex(['2020-01-01', '2020-01-02', ... , '2020-07-18'],已被重新采样,以显示特定股票价格的每周总和。

代码:

# Imports
import pandas as pd
#import matplotlib.pyplot as plt
import numpy as np
import plotly.graph_objects as go
#from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot

# data, random sample to illustrate stocks
np.random.seed(12345)
rows = 200
x = pd.Series(np.random.randn(rows),index=pd.date_range('1/1/2020', periods=rows)).cumsum()
y = pd.Series(x-np.random.randn(rows)*5,index=pd.date_range('1/1/2020', periods=rows))
df = pd.concat([y,x], axis = 1)
df.columns = ['StockA', 'StockB']

# resample daily data to weekly sums
df2=df.reset_index()
df3=df2.resample('W-Mon', on='index').mean()

# build and show plotly plot
fig = go.Figure([go.Bar(x=df3.index, y=df3['StockA'])])
fig.show()
Run Code Online (Sandbox Code Playgroud)

让我知道这对您有何作用。