我正在尝试绘制一个数据框,其日期时间索引为 x - 和 y 错误。
考虑以下最小例子,我想要1/2天的错误栏,因为数据在此范围内被分箱:
from pandas import DataFrame
import numpy as np
import datetime
start = np.datetime64("2014-01-1")
stop = start + np.timedelta64(100, "D")
df = DataFrame()
df["y"] = np.random.normal(0, 1, 100)
df.index = np.arange(start, stop)
df["y"].plot()
但我尝试的所有内容都会导致错误,例如
xerr = np.timedelta64(0.5, "D")
xerr = np.timedelta64(12, "h")
xerr = datetime.timedelta(days=0.5)
那么如何实现长度为1/2天的错误栏呢?
答案 0 :(得分:1)
仅使用pandas.DataFrame.plot(xerr=)
,只要pandas.Timedelta
与DatetimeIndex
频率具有相同的单位,错误就会起作用。
我从下面的代码中得到了2个我认为你想要的表格:
from pandas import DataFrame, date_range, Timedelta
import numpy as np
rng = date_range(start='2014-01-01', periods=5, freq='24H')
df = DataFrame({'y':np.random.normal(size=len(rng))}, index=rng)
terr = Timedelta(hours=12)
ax = df['y'].plot(xerr=len(df)*[terr])
rng2 = date_range(start='2014-01-01', periods=5, freq='D')
df2 = DataFrame({'y':np.random.normal(size=len(rng))}, index=rng)
terr2 = Timedelta(days=0.5)
ax2 = df2['y'].plot(xerr=len(df2)*[terr2])
答案 1 :(得分:0)
不确定是否可以使用pandas.DataFrame.plot()
方法。
可以直接调用matplotlib
:
from pandas import DataFrame, date_range, Timedelta
import numpy as np
import matplotlib.pyplot as plt
rng = date_range(start='2014-01-01', periods=100, freq='D')
df = DataFrame({'y':np.random.normal(size=len(rng))}, index=rng)
terr = Timedelta(hours=12)
yerr = 0.05
fig, ax = plt.subplots()
ax.errorbar(df.index, df.y, xerr=terr)