Я пытаюсь создать интерактивную гистограмму, которая отображает случайный ряд.Взаимодействие должно позволять виджету TextBox передавать новые значения для функции random.normal и перерисовывать гистограмму.Пока у меня есть начальная гистограмма, показывающая с полями ввода, но я даже не могу сделать поля, чтобы принять ввод.Я попытался воссоздать гистограмму каждый раз, когда значение вводится в виджет TextBox:
normal = np.random.normal
fig, ax = plt.subplots()
ax.set_xlim(-6,9.5)
ax.set_ylim(0, 0.25)
plt.subplots_adjust(bottom=0.2)
nloc = 1.0
nscale = 2.0
a = plt.hist(normal(nloc, nscale, 1000), bins=30, alpha=0.5, density = True)
def submitloc(text):
value = float(text)
nseries = normal(value, nscale, 1000)
plt.sca(ax)
plt.cla()
a = plt.hist(nseries, bins=30, alpha=0.5, density = True)
plt.draw()
def submitscale(text):
value = float(text)
nseries = normal(nloc, value, 1000)
plt.sca(ax)
plt.cla()
a = plt.hist(nseries, bins=30, alpha=0.5, density = True)
plt.draw()
axbox = plt.axes([0.1, 0.05, 0.1, 0.05])
text_box = TextBox(axbox, 'loc ', initial=nloc)
text_box.on_submit(submitloc)
axbox2 = plt.axes([0.3, 0.05, 0.1, 0.05])
text_box2 = TextBox(axbox2, 'scale ', initial=nscale)
text_box2.on_submit(submitscale)
plt.show()
Я также пытался изменить глобальные переменные nloc и nscale из ввода текстового поля:
normal = np.random.normal
fig, ax = plt.subplots()
ax.set_xlim(-6,9.5)
ax.set_ylim(0, 0.25)
plt.subplots_adjust(bottom=0.2)
nloc = 1.0
nscale = 2.0
def drawplot(nloc, nscale):
plt.hist(normal(nloc, nscale, 1000), bins=30, alpha=0.5, density = True);
plt.show()
def submitloc(text):
plt.sca(ax)
plt.cla()
global nloc
nloc = float(text)
drawplot(nloc, nscale)
def submitscale(text):
plt.sca(ax)
plt.cla()
global nscale
nscale = float(text)
drawplot(nloc, nscale)
drawplot(nloc, nscale)
axbox = plt.axes([0.1, 0.05, 0.1, 0.05])
text_box = TextBox(axbox, 'loc ', initial=nloc)
text_box.on_submit(submitloc)
axbox2 = plt.axes([0.3, 0.05, 0.1, 0.05])
text_box2 = TextBox(axbox2, 'scale ', initial=nscale)
text_box2.on_submit(submitscale)