Как рисовать вертикальные линии динамически в Matplotlib? - PullRequest
0 голосов
/ 24 октября 2019

Я хочу использовать matplotlib.animation для динамического рисования непрерывных вертикальных линий, как в приведенном примере. Но я понятия не имею, как заставить это работать. пример

Предыдущая программа выглядит следующим образом:

import numpy as np
import matplotlib.pyplot as pl
from matplotlib.animation import FuncAnimation

a=np.arange(0,1000,20)

fig=pl.figure()
xx=np.array([])
ax=fig.add_subplot(1,1,1,xlim=(0,1000),ylim=(0,1))
line,=ax.axvline(x=np.array([]),ymin=0,ymax=0.5,animated=False)

def init():
    line.set_data([])
    return line,

def update(i):
    xx=np.append(xx,np.argwhere(i==a))
    line.set_data(xx)
    return line,
ani=FuncAnimation(fig,update,frames=np.arange(0,1000,1),interval=10,init_func=init,blit=True)
pl.show()

, а ошибка следующая:

Traceback (most recent call last):

  File "<ipython-input-21-762281d37b01>", line 1, in <module>
    runfile('C:/Users/Administrator/Desktop/untitled0.py', wdir='C:/Users/Administrator/Desktop')

  File "C:\Users\Administrator\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 786, in runfile
    execfile(filename, namespace)

  File "C:\Users\Administrator\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "C:/Users/Administrator/Desktop/untitled0.py", line 17, in <module>
    line,=ax.axvline(x=np.array([]),ymin=0,ymax=0.5,animated=False)

  File "C:\Users\Administrator\Anaconda3\lib\site-packages\matplotlib\axes\_axes.py", line 935, in axvline
    self.add_line(l)

  File "C:\Users\Administrator\Anaconda3\lib\site-packages\matplotlib\axes\_base.py", line 1902, in add_line
    self._update_line_limits(line)

  File "C:\Users\Administrator\Anaconda3\lib\site-packages\matplotlib\axes\_base.py", line 1924, in _update_line_limits
    path = line.get_path()

  File "C:\Users\Administrator\Anaconda3\lib\site-packages\matplotlib\lines.py", line 1027, in get_path
    self.recache()

  File "C:\Users\Administrator\Anaconda3\lib\site-packages\matplotlib\lines.py", line 679, in recache
    self._xy = np.column_stack(np.broadcast_arrays(x, y)).astype(float)

  File "<__array_function__ internals>", line 6, in broadcast_arrays

  File "C:\Users\Administrator\Anaconda3\lib\site-packages\numpy\lib\stride_tricks.py", line 264, in broadcast_arrays
    shape = _broadcast_shape(*args)

  File "C:\Users\Administrator\Anaconda3\lib\site-packages\numpy\lib\stride_tricks.py", line 191, in _broadcast_shape
    b = np.broadcast(*args[:32])

ValueError: shape mismatch: objects cannot be broadcast to a single shape
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...