Note that there are some explanatory texts on larger screens.

plurals
  1. POPython: Matplotlib Button not working
    primarykey
    data
    text
    <p>I have this code containing a button called <code>bbutton</code> which when pressed executes the <code>movetext</code> function:</p> <pre><code>from pylab import * from matplotlib.widgets import RectangleSelector from matplotlib.widgets import Button import numpy as np import matplotlib.pylab as plt fig = plt.figure() ax = fig.add_subplot(111) delta = 0.025 x = np.arange(-3.0, 3.0, delta) y = np.arange(-2.0, 2.0, delta) X, Y = np.meshgrid(x, y) Z1 = bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0) Z2 = bivariate_normal(X, Y, 1.5, 0.5, 1, 1) Z = (Z1 - Z2) * 10 plt.contourf(X, Y, Z) text1=plt.text(0, 0, 'ghghg',color='black',fontsize=14) plt.text(1, 1, 'Calculation ',color='black',fontsize=14) plt.title('Average ') plt.xlabel('Longtitude ', fontsize=14, color='black') plt.ylabel('Latitude ', fontsize=14, color='black') plt.grid(True) def onselect(eclick, erelease): 'eclick and erelease are matplotlib events at press and release' text1.set_text('Geo ') text1.set_x(eclick.xdata) text1.set_y(eclick.ydata) plt.draw() def toggle_selector(event): print ' Key pressed.' if event.key in ['Q', 'q'] and toggle_selector.RS.active: print ' RectangleSelector deactivated.' toggle_selector.RS.set_active(False) if event.key in ['A', 'a'] and not toggle_selector.RS.active: print ' RectangleSelector activated.' toggle_selector.RS.set_active(True) def movetext(self): print 'clearing plot' text1.set_x(np.random.random(1)) text1.set_y(np.random.random(1)) plt.draw() toggle_selector.RS = RectangleSelector(ax, onselect, drawtype='line') plt.connect('key_press_event', toggle_selector) buttonaxe = plt.axes([0.7, 0.05, 0.1, 0.1]) bbutton = Button(buttonaxe, 'movetext',color='0.85', hovercolor='0.95') bbutton.on_clicked(movetext) plt.show() </code></pre> <p>The button placed at the bottom works fine. But in the following example if i just put all the code inside a function called <code>Plotter</code> the button shows up in the plot but it is not working. No change when the mouse hovers above the button, and the connected function <code>movetext</code> is not executing.</p> <pre><code>from pylab import * from matplotlib.widgets import RectangleSelector from matplotlib.widgets import Button import numpy as np import matplotlib.pylab as plt fig = plt.figure() ax = fig.add_subplot(111) def Plotter(): delta = 0.025 x = np.arange(-3.0, 3.0, delta) y = np.arange(-2.0, 2.0, delta) X, Y = np.meshgrid(x, y) Z1 = bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0) Z2 = bivariate_normal(X, Y, 1.5, 0.5, 1, 1) Z = (Z1 - Z2) * 10 #Z1 = mlab.bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0) plt.contourf(X, Y, Z) text1=plt.text(0, 0, 'ghghg',color='black',fontsize=14) plt.text(1, 1, 'Calculation ',color='black',fontsize=14) plt.title('Average ') plt.xlabel('Longtitude ', fontsize=14, color='black') plt.ylabel('Latitude ', fontsize=14, color='black') plt.grid(True) def onselect(eclick, erelease): 'eclick and erelease are matplotlib events at press and release' text1.set_text('Geo ') text1.set_x(eclick.xdata) text1.set_y(eclick.ydata) plt.draw() def toggle_selector(event): print ' Key pressed.' if event.key in ['Q', 'q'] and toggle_selector.RS.active: print ' RectangleSelector deactivated.' toggle_selector.RS.set_active(False) if event.key in ['A', 'a'] and not toggle_selector.RS.active: print ' RectangleSelector activated.' toggle_selector.RS.set_active(True) def movetext(self): print 'clearing plot' text1.set_x(np.random.random(1)) text1.set_y(np.random.random(1)) plt.draw() toggle_selector.RS = RectangleSelector(ax, onselect, drawtype='line') plt.connect('key_press_event', toggle_selector) buttonaxe = plt.axes([0.7, 0.05, 0.1, 0.1]) bbutton = Button(buttonaxe, 'movetext',color='0.85', hovercolor='0.95') bbutton.on_clicked(movetext) Plotter() plt.show() </code></pre> <p>Can someone explain this behaviour? What am i doing wrong? </p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload