我正在尝试使用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()
有人对此问题有任何信息吗? 谢谢
答案 0 :(得分:3)
xbins.size
。要获取每周垃圾箱,请将xbins.size
设置为604800000
(7天,每个86,400,000毫秒)。
Plotly提供格式xM
来获取月度垃圾箱,因为此用例需要在后台进行更复杂的计算,因为月度垃圾箱的大小不统一。
答案 1 :(得分: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()
让我知道它如何为您工作。