是什么导致了Python库的时间偏移?
在下面的代码示例中,请注意,第一个和第二个绘图的数据之间的唯一区别是时间序列<代码>ts1用于第一个是什么导致了Python库的时间偏移?,python,pandas,matplotlib,plot,Python,Pandas,Matplotlib,Plot,在下面的代码示例中,请注意,第一个和第二个绘图的数据之间的唯一区别是时间序列ts1用于第一个b数据系列,而ts2用于第二个b数据系列 时间序列之间的唯一区别是第一天和最后一天的小时数。如果我更改为10(如ts1),则问题消失 守则: from datetime import datetime import pandas as pd from matplotlib import pyplot as plt f = '%Y-%m-%d %H:%M:%S'
b
数据系列,而ts2
用于第二个b
数据系列
时间序列之间的唯一区别是第一天和最后一天的小时数。如果我更改为10
(如ts1
),则问题消失
守则:
from datetime import datetime
import pandas as pd
from matplotlib import pyplot as plt
f = '%Y-%m-%d %H:%M:%S'
data1 = [1, 2, 3]
data2 = [4, 3, 2]
ts1 = [datetime.strptime('2000-01-01 10:00:00', f), datetime.strptime('2000-01-02 10:00:00', f), datetime.strptime('2000-01-03 10:00:00', f)]
ts2 = [datetime.strptime('2000-01-01 09:00:00', f), datetime.strptime('2000-01-02 10:00:00', f), datetime.strptime('2000-01-03 11:00:00', f)]
a1 = pd.DataFrame(data1, ts1, ['a'])
a2 = pd.DataFrame(data2, ts1, ['b'])
b1 = pd.DataFrame(data1, ts1, ['a'])
b2 = pd.DataFrame(data2, ts2, ['b'])
fig, axs = plt.subplots(nrows=1, ncols=3, figsize=(15, 5))
a1.plot(ax=axs[0], color='r')
a2.plot(ax=axs[0].twinx())
b1.plot(ax=axs[1], color='r')
b2.plot(ax=axs[1].twinx())
axs[2].plot(ts1, data1, color='r')
axs[2].twinx().plot(ts2, data2)
fig.tight_layout()
fig.savefig('../output/plottest.png', format='png')
输出:
是什么原因导致pandas仅仅因为一个小时的值改变而将a
系列移动到2053或中心绘图中的大约2053处?这个问题快把我逼疯了。。。我试着用pd.Timestamp
来代替,但这并没有改变什么
我包括了第三个图,以表明仅使用matplotlib的相同数据的基本图似乎没有此问题,因此,这似乎是我使用pandas的问题?还是DataFrame.plot函数中的错误
编辑:
我在Windows上运行3.6.3 64位Python的脚本中使用了requirements.txt:
backports.functools-lru-cache==1.4
cycler==0.10.0
matplotlib==2.1.0
numpy==1.13.3
pandas==0.21.0
pyparsing==2.2.0
python-dateutil==2.6.1
pytz==2017.2
six==1.11.0
通过
pip install-r requirements.txt安装
奇怪的是,即使只将ts3
的第一项更改为1秒后,它也会工作,2000-01-01 09:00:01
。哈,这也很有趣。。。(我做了编辑,你的评论对我来说很有意义,但我简化了示例,所以我明白你的意思是说ts2
-对不起)。你说得对,我可以复制这个结果。疯狂。我想问题出在twinx
。这可能是因为熊猫的日期定位仪无法“配对”。你可以在pandas issue tracker上打开一个关于这个的问题。FWIW,我无法复制这个确切的错误:当我绘制它时,a
不会显示在中间的绘图上,日期刻度线是螺旋形的。pandas 0.21。请注意,此项目现在也已在pandas问题跟踪器上注册为问题。