Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to get rid of maximum recursion depth error while plotting interactively?
    text
    copied!<p>I'm trying to build an interactive plot. This one is supposed to clear the figure if clicked within axes and draw a circle at a random place. The code is as follows:</p> <pre><code>import matplotlib.pyplot as plt import random def draw_circle(event): if event.inaxes: print(event.xdata, event.ydata) plt.cla() a = random.randint(0,100) b = random.randint(0,100) s, = plt.plot(a,b,'o', ms=100, color="blue",visible=True ) plt.show() fig = plt.figure() ax = plt.subplot(111) s, = plt.plot(1,2,'o', ms=100, color="blue",visible=True ) plt.connect("button_press_event", draw_circle) plt.show() </code></pre> <p>After clicking for 42 times, the program breaks and I get the following traceback:</p> <pre><code>Exception in Tkinter callback Traceback (most recent call last): File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1413, in __call__ return self.func(*args) File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py", line 286, in button_press_event FigureCanvasBase.button_press_event(self, x, y, num, guiEvent=event) File "/usr/lib/pymodules/python2.7/matplotlib/backend_bases.py", line 1632, in button_press_event self.callbacks.process(s, mouseevent) File "/usr/lib/pymodules/python2.7/matplotlib/cbook.py", line 262, in process proxy(*args, **kwargs) File "/usr/lib/pymodules/python2.7/matplotlib/cbook.py", line 192, in __call__ return mtd(*args, **kwargs) File "/home/almarahat/Dropbox/python/GUI/Testing site/test_rt/baud_test.py", line 8, in draw_circle plt.cla() File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 2784, in cla ret = gca().cla() File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 842, in cla spine.cla() File "/usr/lib/pymodules/python2.7/matplotlib/spines.py", line 157, in cla self.axis.cla() File "/usr/lib/pymodules/python2.7/matplotlib/axis.py", line 731, in cla self.reset_ticks() File "/usr/lib/pymodules/python2.7/matplotlib/axis.py", line 744, in reset_ticks self.majorTicks.extend([self._get_tick(major=True)]) File "/usr/lib/pymodules/python2.7/matplotlib/axis.py", line 1553, in _get_tick return XTick(self.axes, 0, '', major=major, **tick_kw) File "/usr/lib/pymodules/python2.7/matplotlib/axis.py", line 141, in __init__ self.tick2line = self._get_tick2line() File "/usr/lib/pymodules/python2.7/matplotlib/axis.py", line 401, in _get_tick2line l.set_transform(self.axes.get_xaxis_transform(which='tick2')) File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 586, in get_xaxis_transform return self.spines['top'].get_spine_transform() File "/usr/lib/pymodules/python2.7/matplotlib/spines.py", line 374, in get_spine_transform self._ensure_position_is_set() File "/usr/lib/pymodules/python2.7/matplotlib/spines.py", line 140, in _ensure_position_is_set self.set_position(self._position) File "/usr/lib/pymodules/python2.7/matplotlib/spines.py", line 365, in set_position self.axis.cla() File "/usr/lib/pymodules/python2.7/matplotlib/axis.py", line 731, in cla self.reset_ticks() File "/usr/lib/pymodules/python2.7/matplotlib/axis.py", line 744, in reset_ticks self.majorTicks.extend([self._get_tick(major=True)]) File "/usr/lib/pymodules/python2.7/matplotlib/axis.py", line 1553, in _get_tick return XTick(self.axes, 0, '', major=major, **tick_kw) File "/usr/lib/pymodules/python2.7/matplotlib/axis.py", line 140, in __init__ self.tick1line = self._get_tick1line() File "/usr/lib/pymodules/python2.7/matplotlib/axis.py", line 383, in _get_tick1line zorder=self._zorder, File "/usr/lib/pymodules/python2.7/matplotlib/lines.py", line 195, in __init__ self._marker = MarkerStyle() File "/usr/lib/pymodules/python2.7/matplotlib/markers.py", line 112, in __init__ self.set_marker(marker) File "/usr/lib/pymodules/python2.7/matplotlib/markers.py", line 171, in set_marker self._recache() File "/usr/lib/pymodules/python2.7/matplotlib/markers.py", line 116, in _recache self._path = Path(np.empty((0,2))) File "/usr/lib/pymodules/python2.7/matplotlib/path.py", line 112, in __init__ if ma.isMaskedArray(vertices): File "/usr/local/lib/python2.7/dist-packages/numpy-1.6.2-py2.7-linux-x86_64.egg/numpy/ma/core.py", line 5683, in isMaskedArray return isinstance(x, MaskedArray) RuntimeError: maximum recursion depth exceeded while calling a Python object </code></pre> <p>At this point, I am not certain where the recursion occurs and how to alleviate this error. </p> <p>I understand (from other Q&amp;As) that I could enhance my stack limit and get around the problem. However, I don't consider that as a solution in this particular case and would like to get to the bottom of this. </p> <p>Any help would be appreciate.</p> <p>Thanks in advance.</p> <p>Additional Information: </p> <ul> <li>The main functionality that matters include clearing the figure and drawing something new on clicking the canvas.</li> <li>The clicking does not raise this error, if I am not trying to plot something. Thus, I suspect, I'm missing something in handling matplotlib. </li> </ul>
 

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