2015-08-28 2 views
1

Я получаю данные от датчика с нефиксированным интервалом. Когда он завершает 90 кадров, я хочу построить его. Я добавляю прямоугольные патчи. Я не могу обновить фигуру. Я думаю, я не могу использовать Funcanimation, поскольку у меня нет фиксированного интервала.Как обновить matplotlib в неравномерном интервале

Я хочу, чтобы функция, когда я ее называю, обновляет фигуру.

У меня есть временная функция, которая должна обновляться после цикла while, но это не так.

import matplotlib.pyplot as plt 
import matplotlib.patches as patches 
import numpy as np 
import pylab 
from random import randint 

def arsplot(rho,phi,wid,height): 

    for i in range(len(rho)): 

     phi[i]=phi[i]+randint(0,9) 
     rho[i]=rho[i]+randint(-5,5) 
     ax1.add_patch(patches.Rectangle((rho[i],phi[i]),wid[i],height[i]))  


rho=[12, 16, 18, 4, 11, 6, 17] 
phi=[12,16,18,4,11,6,17] 
wid=[2,2,2,2,2,2,2] 
height=[1,1,1,1,1,1,1] 

fig1=plt.figure(figsize=(15,32)) 
ax1=fig1.add_subplot(111, aspect='equal') 
plt.grid(True) 
pylab.xlim([-25,45]) 
pylab.ylim([-15,55]) 

while True: 

    arsplot(rho,phi,wid,height) #function call 

    plt.show() 
+0

Смотрите примеры в https://github.com/matplotlib/matplotlib/issues/4947 (да, это должно быть в документации, но это не так) – tacaswell

ответ

0

Я получил ответ на свой вопрос. используйте команду set_data (x, y) '. Ниже приведен пример абстрактный код:

plot_x = [0] 
plot_y = [0] 

fig1=plt.figure(figsize=(15,32)) 
ax1=fig1.add_subplot(111, aspect='equal') 
Ln, = ax1.plot(plot_x,plot_y,'ro') 
.....  #your function for changing x,y points. 
..... 
..... 
Ln.set_data(plot_x,plot_y) 
plt.pause(0.01) 
Смежные вопросы