Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是什么导致了Python库的时间偏移?_Python_Pandas_Matplotlib_Plot - Fatal编程技术网

是什么导致了Python库的时间偏移?

是什么导致了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'

在下面的代码示例中,请注意,第一个和第二个绘图的数据之间的唯一区别是时间序列<代码>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'

    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问题跟踪器上注册为问题。