I have a list with roughly 3000 items (every item is a list of 10points). One item might look like this:
[['-19.05364812189936' '-8.078571934798015']
['-4.481956059532247' '10.88512402551382']
['-15.985506732813608' '-19.92397590361446']
['-1.2933416017009214' '-10.233128986534373']
['-19.640113394755492' '2.7974946846208364']
['-9.466119773210488' '1.8171420978029766']
['4.998052799433026' '-0.5782990786676117']
['-7.883010276399716' '-9.731805457122608']
['-2.754521615875266' '-18.244450744153085']
['-17.105912473423103' '13.09440644932672']
['right' '0']]
What I want in the end is to plot the first item, do some user interaction (assign a label to the plotted points), confirm (save to another list: 10 points + label) and plot the next and so on.
Here is my current code:
import numpy as np
import Utils as utils
import matplotlib.pyplot as plt
methods = utils.ClusteringMethods()
db = utils.DbConnection()
formations = methods.readFromDump('testNewInterval')
formation_list = []
formation_list.append('5-3-2')
formation_list.append('4-4-2')
formation_list.append('4-3-3')
labelled_formations = []
def add_formation_def():
name = input('Please specify formation')
if(name not in formation_list):
formation_list.append(name)
else:
print('Already there, please try again')
def showOptionList():
for idx, item in enumerate(formation_list):
print(idx, ' - ', item)
def getCurrentFormation(index):
return formations[index]
def showClearPlot():
ax1.clear()
ax1.imshow(im, extent=[-55, 55, -35, 35], aspect='auto')
def nextPlot():
print('in next plot..')
global currentIndex
global currentFormation
currentIndex = currentIndex +1
ax1.clear()
ax1.imshow(im, extent=[-55, 55, -35, 35], aspect='auto')
currentFormation = getCurrentFormation(currentIndex)
showPlot(currentFormation)
def showPlot(currentFormation):
orientation = currentFormation[-1][0]
print('orientation: ', orientation)
currentFormation = currentFormation[:-1]
for point in currentFormation:
ax1.plot(float(point[0]), float(point[1]), '.', markersize=14, mfc='darkgreen', mec='k')
plt.show()
def on_key(event):
print('key: ', event.key)
if (event.key == ' '):
showOptionList()
if (event.key == 'f1'):
add_formation_def()
if(event.key == 'f2'):
nextPlot()
#Initialize Pitch
fig = plt.figure(figsize=(11,6))
ax1 = fig.add_subplot(111)
im = plt.imread('field.png')
ax1.imshow(im, extent=[-55, 55, -35, 35], aspect='auto')
#register events
cid = fig.canvas.mpl_connect('key_press_event', on_key)
currentIndex = 0
currentFormation = formations[currentIndex]
showPlot(currentFormation)
It works for a few items but eventually I'm getting the following error:
RecursionError: maximum recursion depth exceeded while calling a Python object
EDIT: Full stacktrace:
Traceback (most recent call last):
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\cbook\__init__.py", line 388, in process
proxy(*args, **kwargs)
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\cbook\__init__.py", line 228, in __call__
return mtd(*args, **kwargs)
File "C:/Users/D071947/PycharmProjects/Formation/LabelFormations.py", line 67, in on_key
nextPlot()
File "C:/Users/D071947/PycharmProjects/Formation/LabelFormations.py", line 40, in nextPlot
ax1.clear()
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\axes\_base.py", line 1116, in clear
self.cla()
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\axes\_base.py", line 982, in cla
spine.cla()
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\spines.py", line 183, in cla
self.axis.cla()
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\axis.py", line 773, in cla
self.reset_ticks()
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\axis.py", line 787, in reset_ticks
self.majorTicks.extend([self._get_tick(major=True)])
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\axis.py", line 2097, in _get_tick
return YTick(self.axes, 0, '', major=major, **tick_kw)
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\axis.py", line 154, in __init__
self.tick1line = self._get_tick1line()
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\axis.py", line 569, in _get_tick1line
l.set_transform(self.axes.get_yaxis_transform(which='tick1'))
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\axes\_base.py", line 779, in get_yaxis_transform
return self.spines['left'].get_spine_transform()
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\spines.py", line 442, in get_spine_transform
self._ensure_position_is_set()
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\spines.py", line 165, in _ensure_position_is_set
self.set_position(self._position)
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\spines.py", line 432, in set_position
self.axis.reset_ticks()
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\axis.py", line 787, in reset_ticks
self.majorTicks.extend([self._get_tick(major=True)])
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\axis.py", line 2097, in _get_tick
return YTick(self.axes, 0, '', major=major, **tick_kw)
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\axis.py", line 152, in __init__
self.apply_tickdir(tickdir)
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\axis.py", line 525, in apply_tickdir
self.stale = True
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\artist.py", line 241, in stale
self.stale_callback(self, val)
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\artist.py", line 68, in _stale_axes_callback
self.axes.stale = val
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\artist.py", line 241, in stale
self.stale_callback(self, val)
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\figure.py", line 56, in _stale_figure_callback
self.figure.stale = val
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\artist.py", line 241, in stale
self.stale_callback(self, val)
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\pyplot.py", line 582, in _auto_draw_if_interactive
if val and matplotlib.is_interactive() and not fig.canvas.is_saving():
RecursionError: maximum recursion depth exceeded
Current thread 0x00003ab4 (most recent call first):
File "C:\ProgramData\Anaconda3\lib\abc.py", line 182 in __instancecheck__
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\markers.py", line 255 in set_marker
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\markers.py", line 189 in __init__
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\lines.py", line 402 in __init__
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\axis.py", line 568 in _get_tick1line
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\axis.py", line 154 in __init__
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\axis.py", line 2097 in _get_tick
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\axis.py", line 787 in reset_ticks
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\spines.py", line 432 in set_position
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\spines.py", line 165 in _ensure_position_is_set
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\spines.py", line 442 in get_spine_transform
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\axes\_base.py", line 779 in get_yaxis_transform
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\axis.py", line 569 in _get_tick1line
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\axis.py", line 154 in __init__
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\axis.py", line 2097 in _get_tick
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\axis.py", line 787 in reset_ticks
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\axis.py", line 773 in cla
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\spines.py", line 183 in cla
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\axes\_base.py", line 982 in cla
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\axes\_base.py", line 1116 in clear
File "C:/Users/D071947/PycharmProjects/Formation/LabelFormations.py", line 40 in nextPlot
File "C:/Users/D071947/PycharmProjects/Formation/LabelFormations.py", line 67 in on_key
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\cbook\__init__.py", line 228 in __call__
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\cbook\__init__.py", line 388 in process
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\backend_bases.py", line 1880 in key_press_event
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\backends\backend_tkagg.py", line 441 in key_press
File "C:\ProgramData\Anaconda3\lib\tkinter\__init__.py", line 1699 in __call__
File "C:\ProgramData\Anaconda3\lib\tkinter\__init__.py", line 557 in mainloop
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\backends\backend_tkagg.py", line 1078 in mainloop
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\backend_bases.py", line 218 in show
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\pyplot.py", line 254 in show
File "C:/Users/D071947/PycharmProjects/Formation/LabelFormations.py", line 55 in showPlot
File "C:/Users/D071947/PycharmProjects/Formation/LabelFormations.py", line 45 in nextPlot
File "C:/Users/D071947/PycharmProjects/Formation/LabelFormations.py", line 67 in on_key
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\cbook\__init__.py", line 228 in __call__
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\cbook\__init__.py", line 388 in process
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\backend_bases.py", line 1880 in key_press_event
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\backends\backend_tkagg.py", line 441 in key_press
File "C:\ProgramData\Anaconda3\lib\tkinter\__init__.py", line 1699 in __call__
File "C:\ProgramData\Anaconda3\lib\tkinter\__init__.py", line 557 in mainloop
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\backends\backend_tkagg.py", line 1078 in mainloop
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\backend_bases.py", line 218 in show
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\pyplot.py", line 254 in show
File "C:/Users/D071947/PycharmProjects/Formation/LabelFormations.py", line 55 in showPlot
File "C:/Users/D071947/PycharmProjects/Formation/LabelFormations.py", line 45 in nextPlot
File "C:/Users/D071947/PycharmProjects/Formation/LabelFormations.py", line 67 in on_key
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\cbook\__init__.py", line 228 in __call__
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\cbook\__init__.py", line 388 in process
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\backend_bases.py", line 1880 in key_press_event
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\backends\backend_tkagg.py", line 441 in key_press
File "C:\ProgramData\Anaconda3\lib\tkinter\__init__.py", line 1699 in __call__
File "C:\ProgramData\Anaconda3\lib\tkinter\__init__.py", line 557 in mainloop
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\backends\backend_tkagg.py", line 1078 in mainloop
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\backend_bases.py", line 218 in show
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\pyplot.py", line 254 in show
File "C:/Users/D071947/PycharmProjects/Formation/LabelFormations.py", line 55 in showPlot
File "C:/Users/D071947/PycharmProjects/Formation/LabelFormations.py", line 45 in nextPlot
File "C:/Users/D071947/PycharmProjects/Formation/LabelFormations.py", line 67 in on_key
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\cbook\__init__.py", line 228 in __call__
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\cbook\__init__.py", line 388 in process
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\backend_bases.py", line 1880 in key_press_event
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\backends\backend_tkagg.py", line 441 in key_press
File "C:\ProgramData\Anaconda3\lib\tkinter\__init__.py", line 1699 in __call__
File "C:\ProgramData\Anaconda3\lib\tkinter\__init__.py", line 557 in mainloop
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\backends\backend_tkagg.py", line 1078 in mainloop
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\backend_bases.py", line 218 in show
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\pyplot.py", line 254 in show
File "C:/Users/D071947/PycharmProjects/Formation/LabelFormations.py", line 55 in showPlot
File "C:/Users/D071947/PycharmProjects/Formation/LabelFormations.py", line 45 in nextPlot
File "C:/Users/D071947/PycharmProjects/Formation/LabelFormations.py", line 67 in on_key
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\cbook\__init__.py", line 228 in __call__
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\cbook\__init__.py", line 388 in process
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\backend_bases.py", line 1880 in key_press_event
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\backends\backend_tkagg.py", line 441 in key_press
File "C:\ProgramData\Anaconda3\lib\tkinter\__init__.py", line 1699 in __call__
File "C:\ProgramData\Anaconda3\lib\tkinter\__init__.py", line 557 in mainloop
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\backends\backend_tkagg.py", line 1078 in mainloop
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\backend_bases.py", line 218 in show
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\pyplot.py", line 254 in show
File "C:/Users/D071947/PycharmProjects/Formation/LabelFormations.py", line 55 in showPlot
File "C:/Users/D071947/PycharmProjects/Formation/LabelFormations.py", line 45 in nextPlot
File "C:/Users/D071947/PycharmProjects/Formation/LabelFormations.py", line 67 in on_key
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\cbook\__init__.py", line 228 in __call__
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\cbook\__init__.py", line 388 in process
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\backend_bases.py", line 1880 in key_press_event
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\backends\backend_tkagg.py", line 441 in key_press
File "C:\ProgramData\Anaconda3\lib\tkinter\__init__.py", line 1699 in __call__
File "C:\ProgramData\Anaconda3\lib\tkinter\__init__.py", line 557 in mainloop
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\backends\backend_tkagg.py", line 1078 in mainloop
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\backend_bases.py", line 218 in show
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\pyplot.py", line 254 in show
File "C:/Users/D071947/PycharmProjects/Formation/LabelFormations.py", line 55 in showPlot
File "C:/Users/D071947/PycharmProjects/Formation/LabelFormations.py", line 45 in nextPlot
File "C:/Users/D071947/PycharmProjects/Formation/LabelFormations.py", line 67 in on_key
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\cbook\__init__.py", line 228 in __call__
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\cbook\__init__.py", line 388 in process
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\backend_bases.py", line 1880 in key_press_event
File "C:\Users\D071947\PycharmProjects\Formation\venv\lib\site-packages\matplotlib\backends\backend_tkagg.py", line 441 in key_press
File "C:\ProgramData\Anaconda3\lib\tkinter\__init__.py", line 1699 in __call__
File "C:\ProgramData\Anaconda3\lib\tkinter\__init__.py", line 557 in mainloop
...
I guess its because of extensive use of
plt.show()
in showplot()
.
I also read a lot about using the interactive mode (ion()
) and replacing .show()
with .draw()
which is not really working for me because it then doesn't show any plot.
User contributions licensed under CC BY-SA 3.0