使用文本框进行交互式绘图

PythonPythonBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本教程中,我们将学习如何使用 Matplotlib 创建一个带有文本框的交互式绘图。文本框小部件允许用户提供文本输入,并实时更新绘图。

虚拟机使用提示

虚拟机启动完成后,点击左上角切换到“笔记本”标签,以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作的验证无法自动化。

如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。

导入所需库

首先,我们需要导入必要的库。我们将使用 NumPy 和 Matplotlib 来创建绘图以及文本框小部件。

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

创建初始绘图

接下来,我们创建一个初始绘图,该绘图将根据用户输入进行更新。在这个例子中,我们创建一个以t为自变量的函数的绘图。

fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.2)

t = np.arange(-2.0, 2.0, 0.001)
l, = ax.plot(t, np.zeros_like(t), lw=2)

定义提交函数

我们定义submit函数,当用户提交文本输入时将调用此函数。该函数会根据用户输入更新绘制的函数。

def submit(expression):
    """
    将绘制的函数更新为新的数学 *表达式*。

    *表达式* 是一个以 "t" 作为自变量的字符串,例如
    "t ** 3"。
    """
    ydata = eval(expression, {'np': np}, {'t': t})
    l.set_ydata(ydata)
    ax.relim()
    ax.autoscale_view()
    plt.draw()

创建文本框小部件

我们创建文本框小部件并将其添加到图形中。当用户在文本框中按下回车键或离开文本框时,on_submit 方法用于触发 submit 函数。我们还将文本框小部件的初始值设置为 t ** 2

axbox = fig.add_axes([0.1, 0.05, 0.8, 0.075])
text_box = TextBox(axbox, "Evaluate", textalignment="center")
text_box.on_submit(submit)
text_box.set_val("t ** 2")  ## Trigger `submit` with the initial string.

显示绘图

最后,我们向用户显示绘图。

plt.show()

总结

在本教程中,我们学习了如何使用 Matplotlib 创建一个带有文本框的交互式绘图。我们创建了一个初始绘图,定义了一个更新绘图的submit函数,创建了一个文本框小部件,并向用户显示了绘图。有了这些知识,你可以创建自己的带有用户输入的交互式绘图。