matplotlib中是否存在文本/数字输入框?

9 投票
3 回答
14484 浏览
提问于 2025-04-18 16:45

有没有文本或数字输入框可以用在 matplotlib 上呢?

我见过一个叫 Slider 的小工具,但那是另外一种东西。我想要的是一个简单的数字输入框。

3 个回答

0

我很喜欢QuadmasterXLII的回答,并且想补充一点。如果你在使用更新滑块系统的时候,可以用这个方法来获取里面的文本。

# text box
t_box = plt.axes([0.05, 0.95, 0.8, 0.04])
file_text_box = TextBox(t_box, 'text', initial=init_txt)

def update(val)
    my_var = text_box.text_disp._text
14

你在寻找的是文本框这个互动小工具,它是在2.1版本中新增的:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import TextBox
fig, ax = plt.subplots()
plt.subplots_adjust(bottom=0.2)
t = np.arange(-2.0, 2.0, 0.001)
ydata = t ** 2
initial_text = "t ** 2"
l, = plt.plot(t, ydata, lw=2)


def submit(text):
    ydata = eval(text)
    l.set_ydata(ydata)
    ax.set_ylim(np.min(ydata), np.max(ydata))
    plt.draw()

axbox = plt.axes([0.1, 0.05, 0.8, 0.075])
text_box = TextBox(axbox, 'Evaluate', initial=initial_text)
text_box.on_submit(submit)

plt.show()
4

目前没有可以用来输入数字的文本小部件。如果你只有少量的离散数字,可以使用单选按钮,或者像你之前提到的那样使用滑块。

最好的办法是使用Tkinter来构建一个完整的图形用户界面(GUI)。这样你就可以添加你需要的任何界面元素。而且,你还可以在Tkinter中嵌入matplotlib图表,具体可以参考这两个例子这里这里

撰写回答