从文本框小部件评估表达式时出现 Pyplot 警告

Pyplot warning when evaluating expression from textbox widget

如果我有一个带有多个“轴”(他们这样称呼它们)的 pyplot 图,并且其中一个有一个文本框,当我写一些特殊的字符序列(例如 *2)时,我收到一条警告,内容如下:

MatplotlibDeprecationWarning: Toggling axes navigation from the keyboard is deprecated since 3.3 and will be removed two minor releases later.
  return self.func(*args)

请注意,如果我只有一个轴,这似乎不会发生。

我需要使用这样的文本框来插入将要计算的函数,因此我可能需要使用 ***。是什么导致此警告?

下面是重现场景的最小示例:

import matplotlib.pyplot as plt
from matplotlib.widgets import TextBox

fig, (ax1, ax2) = plt.subplots(1, 2)
tb1 = TextBox(ax1, 'Textbox: ')
ax2.plot([1,2,3,4,5])
plt.show()

看来您可以在 matplotlib 中取消绑定默认键绑定:

import matplotlib.pyplot as plt
from matplotlib.widgets import TextBox

fig, (ax1, ax2) = plt.subplots(1, 2)
fig.canvas.mpl_disconnect(fig.canvas.manager.key_press_handler_id)
tb1 = TextBox(ax1, 'Textbox: ')
ax2.plot([1,2,3,4,5])
plt.show()

- 您显然也可以指定要忽略的绑定。

另一种方法是只抑制此警告:

import warnings
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.widgets import TextBox

with warnings.catch_warnings():
    warnings.simplefilter("ignore", matplotlib.MatplotlibDeprecationWarning)
    fig, (ax1, ax2) = plt.subplots(1, 2)
    tb1 = TextBox(ax1, 'Textbox: ')
    ax2.plot([1,2,3,4,5])
    plt.show()