python 在mplfinance中将x轴上的刻度设置为30分钟会产生过于频繁的刻度

vlf7wbxs  于 2023-09-29  发布在  Python
关注(0)|答案(1)|浏览(205)

我试图绘制一天的E-mini数据。日期时间指数与通常的OHLC数据和5分钟蜡烛。我想每半小时显示一次x轴刻度和相应的网格线。不知何故,我得到的方式以上所需的滴答数(见下文)。
此外,还有一个反复出现的信息如下:

Locator attempting to generate 5807 ticks ([-6.470138888888889, ..., 114.48819444444445]), which exceeds Locator.MAXTICKS (1000).

我做错了什么?
谢谢你,谢谢

fig, axlist = mpl.plot(
    df[['open', 'high', 'low', 'close', 'volume']].loc['2022-6-9 6:45':'2022-6-9 15:45'],
    type="candle", 
    title = "Micro E-mini S&P 500 Price",  
    style="yahoo", volume=True, figratio=(12.00, 5.75),
    returnfig=True
    )

# axlist[0].yaxis.set_major_formatter(FormatStrFormatter('$%.2f'))
axlist[0].xaxis.set_major_locator(mdates.MinuteLocator(interval=30))

mpl.show()

mgdq6dx1

mgdq6dx11#

我怀疑这个问题是因为,在引擎盖下,mplfinance使用 Dataframe 行号作为x坐标,而show_nontrading=False(默认值)。尝试设置kwargshow_nontrading=True,看看是否有效。(此设置将使x坐标恢复为mdates)请让我知道这个建议是否有效。(我目前正在对mplfinance进行增强,以使其更容易控制x轴的刻度。这个建议可能会有帮助)。
我做了一个测试,证实了我的假设(见我在问题下的评论)。实际上**在调用mpf.plot()时设置kwarg show_nontrading=True**将允许axlist[0].xaxis.set_major_locator(mdates.MinuteLocator(interval=30))正确工作。
然而,它可能不会将刻度设置在30分钟标记上,而是每个刻度将距离前一个刻度30分钟。
看起来将刻度精确设置在00和30分钟标记上的方法是,而不是interval=30byminute=[0,30],因此:

axlist[0].xaxis.set_major_locator(mdates.MinuteLocator(byminute=[0,30]))

相关问题