Backtrader在VSCode中无法绘图的问题求助
问题描述
在VSCode中运行Backtrader测试代码时,调用cerebro.plot()仅输出[[<Figure size 640x480 with 4 Axes>]],但无任何图形窗口或内嵌显示,代码执行无报错。已按Backtrader文档要求安装兼容的Matplotlib 3.2.2版本,Python环境为3.10.13自定义环境,当前存在matplotlib(pypi源)与matplotlib-inline(conda-forge源)混合安装的情况,尝试过重装相关包、降级Matplotlib后问题仍未解决。
环境信息
# Name Version Build Channel matplotlib 3.2.2 pypi_0 pypi matplotlib-inline 0.1.7 pyhd8ed1ab_0 conda-forge
测试代码
%matplotlib inline import matplotlib import matplotlib_inline import matplotlib.pyplot as plt # For plotting with matplotlib import backtrader as bt import backtrader.plot as btplt import datetime import yfinance as yf import backtrader.plot as btplt df = yf.download('AAPL', start='2010-01-01', end='2024-01-01') feed = bt.feeds.PandasData(dataname=df) cerebro = bt.Cerebro() cerebro.adddata(feed) cerebro.run() matplotlib.pyplot.switch_backend('module://ipykernel.pylab.backend_inline') cerebro.plot()
解决方案
1. 统一包安装源,消除依赖冲突
混合源安装容易导致包依赖不兼容,先清理现有安装再统一源重装:
- 卸载现有包:
pip uninstall matplotlib matplotlib-inline -y conda remove matplotlib matplotlib-inline -y - 选择单一源重新安装,比如用conda:
或用pip:conda create -n backtrader_env python=3.10.13 matplotlib=3.2.2 matplotlib-inline=0.1.7 -c conda-forgepip install matplotlib==3.2.2 matplotlib-inline==0.1.7
2. 调整VSCode绘图显示设置
- 打开VSCode设置,搜索
Python: Matplotlib Plotting,将Backend设置为inline或auto - 若使用Jupyter notebook运行代码,确保VSCode的Jupyter扩展已安装并启用;若使用.py文件,在运行配置中添加环境变量
MPLBACKEND=module://ipykernel.pylab.backend_inline
3. 优化代码中的后端设置逻辑
- 移除重复的
import backtrader.plot as btplt语句 - 将后端切换代码移至模块导入前,避免冲突,并显式调用
plt.show():%matplotlib inline import matplotlib matplotlib.use('module://ipykernel.pylab.backend_inline') import matplotlib.pyplot as plt import backtrader as bt import yfinance as yf import datetime df = yf.download('AAPL', start='2010-01-01', end='2024-01-01') feed = bt.feeds.PandasData(dataname=df) cerebro = bt.Cerebro() cerebro.adddata(feed) cerebro.run() figs = cerebro.plot() plt.show() - 若运行的是.py文件而非Jupyter notebook,去掉
%matplotlib inline,改用GUI后端并调用plt.show():import matplotlib matplotlib.use('TkAgg') # 需确保系统已安装Tkinter依赖 import matplotlib.pyplot as plt import backtrader as bt import yfinance as yf # 其余代码保持不变 figs = cerebro.plot() plt.show()
4. 确认VSCode的Python解释器选择
检查VSCode左下角状态栏,确保选中的是你配置的3.10.13自定义环境,避免误使用其他环境的依赖包
内容的提问来源于stack exchange,提问作者BobWeAddaBaby
相关产品推荐
相关产品推荐

