为何使用Backtrader执行cerebro.plot(style='candlestick')时不显示xticks?
Backtrader 蜡烛图不显示X轴刻度(xticks)的解决方案
以下是几个经过验证的解决办法,针对cerebro.plot(style='candlestick')不显示X轴刻度的问题:
手动强制设置X轴刻度显示
直接获取绘图后的matplotlib轴对象,手动配置刻度参数:import matplotlib # 执行绘图并获取fig和axes fig, axes = cerebro.plot(style='candlestick') # 遍历所有子图轴,开启X轴刻度 for ax in axes: # 开启X轴主副刻度显示 ax.tick_params(axis='x', which='both', visible=True, labelsize=8, rotation=45) # 设置日期格式化器和定位器 ax.xaxis.set_major_locator(matplotlib.dates.AutoDateLocator()) ax.xaxis.set_major_formatter(matplotlib.dates.DateFormatter('%Y-%m-%d')) # 显示图形 matplotlib.pyplot.show()调整数据范围或粒度
如果回测数据的时间跨度极大(比如数年分钟线),Backtrader会自动隐藏刻度防止重叠。试试:- 缩小回测的时间区间,只保留部分数据测试
- 将数据resample到更大的时间粒度(比如从1分钟线转为日线)
升级依赖库版本
旧版本的Backtrader和matplotlib存在兼容性bug,导致X轴刻度不渲染。执行升级命令:pip install --upgrade backtrader matplotlib自定义Plot观察者强制开启刻度
若以上方法都无效,可自定义Backtrader的Observer组件,强制让X轴可见:from backtrader import Observer class ForceXticksObserver(Observer): plotinfo = dict(plot=True, subplot=False) def plot(self, fig, ax): # 强制开启X轴可见性 ax.xaxis.set_visible(True) ax.tick_params(axis='x', visible=True) return super().plot(fig, ax) # 添加到cerebro中 cerebro.addobserver(ForceXticksObserver)
内容的提问来源于stack exchange,提问作者Jeff Kwok
相关产品推荐
相关产品推荐

