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

JupyterLab如何显示外部文件创建的matplotlib可交互图表

JupyterLab导入外部文件matplotlib图表无法内联渲染问题

需求背景

我希望实现一个支持点击交互的地图,点击地图任意位置后,即可绘制对应点位的SkewT(斜温图)与Hodograph(风矢端图),展示该点位的气象信息。我基于metpy库编写了SoundingGraphs类封装相关绘图逻辑,可成功生成目标图表:

已成功绘制的SkewT与Hodograph
SkewT与Hodograph绘制效果

遇到的问题

将绘图代码存放在独立外部文件、仅导入SoundingGraphs类到JupyterLab使用时,图表始终无法在笔记本单元格内渲染,仅会在日志中以警告、信息级别的条目输出,原因不明:

日志中输出的图表信息
图表输出在日志中的效果

已尝试的无效方案

  • 在外部文件内调用plt.show()
  • 返回plt对象后在notebook单元格内调用plt.show()
  • 切换%matplotlib widget/%matplotlib notebook/%matplotlib inline等matplotlib后端
  • 更换JupyterLab版本

临时替代方案(不满足需求)

目前可通过将图表输出为字节流、加载静态图片的方式实现显示,但该方案无法支持后续悬停显示数值等交互需求,不符合预期。

类中字节流输出代码:

buffer = BytesIO()
plt.savefig(buffer, format='png')
return buffer

Notebook中加载静态图的代码:

image = Image()
display(image)

def on_generate_button_clicked(b):
    buffer = SoundingGraphs(infos)
    buffer.seek(0)
    image.value=buffer.read()
    image.format='png'

generate_button.on_click(on_generate_button_clicked)

诉求

寻找可行方法,能够在JupyterLab单元格内正常显示外部文件中通过plt.show()生成的可交互图表。

运行环境版本

Python 3.6.9
jupyterlab==3.2.9
jupyterlab-pygments==0.1.2
jupyterlab-server==2.10.3
jupyterlab-widgets==1.1.0
ipykernel==5.5.6
ipyleaflet==0.14.0
ipympl==0.8.8
ipython==7.16.3
ipython-genutils==0.2.0
ipywidgets==7.7.0
matplotlib==3.3.4

内容的提问来源于stack exchange,提问作者PhilippeTh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 10:03:15