You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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:
    conda create -n backtrader_env python=3.10.13 matplotlib=3.2.2 matplotlib-inline=0.1.7 -c conda-forge
    
    或用pip:
    pip 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 07:52:42