c формы (2, 3) не приемлемо в качестве цветовой последовательности для x с размером 2, y с размером 2 - PullRequest
0 голосов
/ 09 марта 2020

Я пытаюсь создать анимированный график разброса сети, которую я написал. Это дает мне ошибки формы в заголовке, что не имеет смысла, потому что (2,3) - это именно та форма, которая необходима для цветовой последовательности RGB на точечной диаграмме с двумя точками. Что странно, иногда программа работает просто отлично. Я запускаю его один раз, он работает (по крайней мере, эту часть), запускаю его снова, и я получаю бессмысленную ошибку. Вот функция, вызывающая проблему:

    def update_plot(self, i, Network, scat):
        network = next(self._stream)
        x = [group._pos[0] for group in network._groups]
        y = [group._pos[1] for group in network._groups ]
        s = [group._population*10 for group in network._groups]
        d = array([group._percents for group in network._groups])
        c = array([group._percents for group in self._initNetwork._groups])
        print('colors', c)
        scat = plt.scatter(x, y, c=d, s=s)
        return scat

Не важно, что именно. Каждая «группа» в сети является узлом, и цвет узла зависит от «процентов» этой группы.

Вот вывод:

('colors', array([[ 0.38678978,  0.23654735,  0.37666288],
       [ 0.03213068,  0.48379012,  0.4840792 ]]))
('colors', array([[ 0.38678978,  0.23654735,  0.37666288],
       [ 0.03213068,  0.48379012,  0.4840792 ]]))
Exception in Tkinter callback
Traceback (most recent call last):
  File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1550, in __call__
    return self.func(*args)
  File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 599, in callit
    func(*args)
  File "/usr/lib/python2.7/dist-packages/matplotlib/backends/backend_tkagg.py", line 95, in _on_timer
    TimerBase._on_timer(self)
  File "/usr/lib/python2.7/dist-packages/matplotlib/backend_bases.py", line 1383, in _on_timer
    ret = func(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/matplotlib/animation.py", line 1542, in _step
    still_going = Animation._step(self, *args)
  File "/usr/lib/python2.7/dist-packages/matplotlib/animation.py", line 1277, in _step
    self._draw_next_frame(framedata, self._blit)
  File "/usr/lib/python2.7/dist-packages/matplotlib/animation.py", line 1296, in _draw_next_frame
    self._draw_frame(framedata)
  File "/usr/lib/python2.7/dist-packages/matplotlib/animation.py", line 1814, in _draw_frame
    self._drawn_artists = self._func(framedata, *self._args)
  File "/home/ttt/Documents/NeuralNetworks/ParadigmPlay.py", line 79, in update_plot
    scat = plt.scatter(x, y, c=d, s=s)
  File "/usr/lib/python2.7/dist-packages/matplotlib/pyplot.py", line 3378, in scatter
    edgecolors=edgecolors, data=data, **kwargs)
  File "/usr/lib/python2.7/dist-packages/matplotlib/__init__.py", line 1718, in inner
    return func(ax, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/matplotlib/axes/_axes.py", line 3988, in scatter
    raise ValueError(msg.format(c.shape, x.size, y.size))
ValueError: c of shape (2, 3) not acceptable as a color sequence for x with size 2, y with size 2

В другом месте в код этих графиков повторяется с помощью matplotlib animation.AnimateFunction (). Как вы можете видеть, он печатает цвета за пару итераций до сбоя, а также отображает фигуру, но не продолжает анимировать.

Любая помощь будет полезна. Я могу дать более подробную информацию о коде, если это необходимо. Когда я пытаюсь сделать простейший случай ошибки, она работает каждый раз. Также приветствуются предложения по другим подходам к анимированным сетям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...