带有日期范围的条形图可以在阴谋中切割条形图

时间:2018-01-04 15:21:23

标签: python pandas plotly

这与this问题类似。 这里我有一个带有日期索引的数据框,我想在一个范围内绘制条形图,这样我就可以使用底部滑块或缩放来访问其他条形图。

这是我的代码

import pandas as pd
import plotly.offline as py

n = 30
df = pd.DataFrame({"A": list(range(n))},
                  index=pd.date_range(start="2017-12-01",
                                      periods=n))

data = [{'x': df.index,
         'y': df["A"],
         'type': 'bar'}]

layout = dict(xaxis=dict(range=[df.index[-10], df.index[-1]]))
fig = dict(data=data, layout=layout)
py.plot(fig)

正如你所看到的那样,第一根和最后一根横条被切成两半。 enter image description here

我可以使用

进行偏移
data = [{'x': df.index,
         'y': df["A"],
         'type': 'bar' ,
         'offset': -0.15
        }]

但是最后一个柱子没有被绘制,甚至刻度也是偏移的。

1 个答案:

答案 0 :(得分:2)

我是故事情节的新手,但我推断条形图以刻度线(日期)为中心,因此情节实际上显示了您指定的范围。 (我同意这在某种程度上是一种令人惊讶的行为,在美学上。)您可以通过使用pandas.tseries.offsets.DateOffset更改显示的范围来显示整个栏:https://pandas.pydata.org/pandas-docs/stable/timeseries.html#dateoffset-objects

import pandas as pd
import plotly.offline as py
from pandas.tseries.offsets import *

n = 30
df = pd.DataFrame({"A": list(range(n))},
                  index=pd.date_range(start="2017-12-01",
                                      periods=n))

data = [{'x': df.index,
         'y': df["A"],
         'type': 'bar'}]

layout = dict(xaxis=dict(range=[df.index[-10] + DateOffset(hours = -12), df.index[-1] + DateOffset(hours = 12)]))
fig = dict(data=data, layout=layout)
py.plot(fig)

输出: figure