2015-05-30 3 views
0

В настоящее время я изучаю библиотеку matplotlib на python 3.4. Я практикую на коде, где пользователь должен взаимодействовать с сюжетом, только щелкнув по нему. Когда клик происходит где-то на участке, должны произойти две вещи: распечатайте значение y и создайте горизонтальную линию на участке, где произошел щелчок.Печатает значение при нажатии, но строка не создается?

То, что я получаю, когда я нажимаю где-то на участке, заключается в том, что печать выполняется по желанию, но горизонтальная линия появляется только в том случае, если я нажимаю F (который заполняет экран сюжета). Другими словами, строка создается, когда я нажимаю на сюжет, но она не появляется, пока я не нажимаю F. Любые идеи, почему это происходит?

Код:

import matplotlib.pyplot as plt 
import numpy as np 

fig = plt.figure() 
ax = fig.add_subplot(111) 
ax.plot(np.random.rand(10)) 

def pick(event): 
    plt.hlines(event.ydata,event.xdata- 
    0.2,event.xdata+0.2,colors='r',linestyle='solid') 
    print('Y coord = %f'%event.ydata) 

fig.canvas.mpl_connect('button_press_event',pick) 
plt.show()  

ответ

1

Вы должны использовать interactive mode обновить участок после каждого щелчка. Используйте plt.ion() перед plt.show().

+0

Использование этого параметра перед plt.show() вызвало не показание графика. Но когда я ставлю его первой линией функции pick (event), она отлично работала. Благодарю. –

+0

Рад, что у вас это работает! – Molly

Смежные вопросы