matplotlib 使用日期小时分钟秒数据设置x轴限值

3htmauhk  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(132)

我有一个框架如下:

o        h        l        c  volume  complete  \
time                                                                        
2020-01-16 00:00:00  1.30400  1.30401  1.30394  1.30401       7      True   
2020-01-16 00:01:00  1.30398  1.30398  1.30394  1.30396       6      True   
2020-01-16 00:02:00  1.30394  1.30402  1.30380  1.30402      20      True   
2020-01-16 00:03:00  1.30400  1.30411  1.30397  1.30411       8      True   
2020-01-16 00:04:00  1.30414  1.30414  1.30411  1.30414       7      True

持续了几个月
我使用matplotlib如下:

ax1 = plt.subplot2grid((6,1), (0,0), rowspan=5, colspan=1)
ax2 = plt.subplot2grid((6,1), (5,0), rowspan=1, colspan=1,sharex=ax1)
ax1.plot(data.index, data['c'])
ax2.plot(data.index, data['volume'])
ax1.set_xlim([data.index.date(2020, 1, 16), data.index.date(2020, 1, 17)])
plt.show()

我得到了如下的traceback:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-67-ad1471a25939> in <module>
      6 #ax1.plot(data.index, data['l'])
      7 ax2.plot(data.index, data['volume'])
----> 8 ax1.set_xlim([data.index.date(2020, 1, 16), data.index.date(2020, 1, 17)])
      9 
     10 plt.show()

TypeError: 'numpy.ndarray' object is not callable

定义xlim的正确方法是什么?理想情况下,使用日期时间值(例如2020-01-16 00:00:00),但日期值也可以(例如2020-01-16)。

pnwntuvh

pnwntuvh1#

Axes.set_xlim希望leftright边界作为单独的参数,而不是列表/数组。
对于时间戳,您可以使用Pandas.timestamp
这应该是你想要的:

ax1.set_xlim(pd.Timestamp('2020-01-16 00:00:00'), pd.Timestamp('2020-01-17 00:00:00'))

相关问题