2021-06-08.BackTrader使用matplotlib绘图报错

最近在学习backtrader。推荐下面2个中文文档:

  • Backtrader中文文档 - Remould
  • Backtrader官方文档中文翻译

都很不错的。后者不仅翻译了文档,还对代码注释进行了翻译。学起来很方便!

学到可视化:绘图一节,使用cerebro.plot()时,报如下错误:

from . import locator as loc
File "***\Python38\lib\site-packages\backtrader\plot\locator.py", line 36, in 
from matplotlib.dates import (HOURS_PER_DAY, MIN_PER_HOUR, SEC_PER_MIN,
ImportError: cannot import name 'warnings' from 'matplotlib.dates' (***\Python38\lib\site-packages\matplotlib\dates.py)

网上搜了一下,据说是matplotlib版本的问题。
我的版本是3.4.1,据说安装较早版本的可以解决该问题。

但是我不想这么做。

研究一下错误提示,应该是在\matplotlib\dates.py引入warnings时发生了错误。
warnings是更早的\backtrader\plot\locator.py引入的。
简单的修改\backtrader\plot\locator.py或许可以解决这个问题。

打开\backtrader\plot\locator.py,看到以下行:

from matplotlib.dates import (HOURS_PER_DAY, MIN_PER_HOUR, SEC_PER_MIN,
                              MONTHS_PER_YEAR, DAYS_PER_WEEK,
                              SEC_PER_HOUR, SEC_PER_DAY,
                              num2date, rrulewrapper, YearLocator,
                              MicrosecondLocator, warnings)

应该就是最后这个warnings出错了。

虽然不知道原理,但是把warnings删除掉看看(改成下面的样子)

from matplotlib.dates import (HOURS_PER_DAY, MIN_PER_HOUR, SEC_PER_MIN,
                              MONTHS_PER_YEAR, DAYS_PER_WEEK,
                              SEC_PER_HOUR, SEC_PER_DAY,
                              num2date, rrulewrapper, YearLocator,
                              MicrosecondLocator)

成了!

在没有找到更好的办法前,就这么凑合用吧。

你可能感兴趣的:(2021-06-08.BackTrader使用matplotlib绘图报错)