阴谋-直方图框的大小到几周

时间:2019-10-24 10:13:40

标签: python-3.x plotly

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

这是我的代码。我尝试过(第5行):“ D7”和“ W1”。那行不通(阴谋似乎无法识别参数,并将其设置为每天一个bin)。奇怪的是,“ 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()

有人对此问题有任何信息吗? 谢谢

2 个答案:

答案 0 :(得分:3)

默认情况下以毫秒为单位指定

xbins.size。要获取每周垃圾箱,请将xbins.size设置为604800000(7天,每个86,400,000毫秒)。

Plotly提供格式xM来获取月度垃圾箱,因为此用例需要在后台进行更复杂的计算,因为月度垃圾箱的大小不统一。

答案 1 :(得分:1)

您真正要寻找的是重新采样的数据源和条形图:

情节:

enter image description here

在这里,基于每日观察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()

让我知道它如何为您工作。