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