Matplotlib在Jupyter Lab中使用ipywidgets时未能更新坐标轴范围

0 投票
0 回答
10 浏览
提问于 2025-04-12 01:31

我在 Jupyter Lab 中使用 ipywidgetsmatplotlib,遇到了一些奇怪的情况。下面是我用的代码示例:

import matplotlib.pyplot as plt
import ipywidgets as widgets
%matplotlib widget
plt.ioff()

d = {
    "a": [1,2,3],
    "b": [2,3,4]
}

fig, ax = plt.subplots()

def update(change):
    data = d[change["new"]]
    ax.clear()  # Clear the previous plot
    ax.plot(data, data)
    ax.set_xlim(min(data), max(data))
    ax.set_ylim(min(data), max(data))
    ax.figure.canvas.draw()
    
dropdown = widgets.Dropdown(options = list(d.keys()))
dropdown.observe(update, "value")

display(dropdown, fig.canvas)
update({"new": "a"})

我执行的步骤如下:

  • 从下拉菜单中选择 b
  • 移动图表
  • 从下拉菜单中选择 a
  • 点击图表上的“重置原始视图”按钮

结果不是把图表的范围恢复到选择 a 时的状态,而是出现了以下情况:

enter image description here

看起来 matplotlib 确实绘制了数据 [1,2,3],但似乎没有根据这些数据更新坐标轴的范围。

我真的希望这不是个bug,而是我做错了什么。有没有人见过这种情况?

0 个回答

暂无回答

撰写回答