【问题标题】:Setting ticks to 30 minutes on x axis in mplfinance creates too frequent ticks在 mplfinance 的 x 轴上将滴答声设置为 30 分钟会导致滴答声过于频繁
【发布时间】:2022-06-11 07:10:35
【问题描述】:

我正在尝试绘制一天的 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()

【问题讨论】:

  • 我怀疑问题是因为,在后台,mplfinance 在show_nontrading=False(默认值)时使用数据帧行号作为 x 坐标。尝试设置 kwarg show_nontrading=True 看看是否可行。 (此设置会将 x 坐标恢复为 mdates)如果此建议有效,请告诉我。 (我目前正在对 mplfinance 进行增强,以便更容易控制 x 轴刻度。同时,这个建议可能会有所帮助)。

标签: python matplotlib mplfinance


【解决方案1】:

我进行了测试并确认了我的假设(请参阅问题下的评论)...确实 在对 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]))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-18
    • 2011-03-05
    • 1970-01-01
    • 2014-05-24
    相关资源
    最近更新 更多