Matplotlib возвращается в начало графика после переключения источника данных - PullRequest
0 голосов
/ 22 декабря 2018

Моя программа при инициализации подключается к серверу coinbase и загружает некоторые исторические значения цены (обычно последние 24 часа).Значения хранятся в списке под названием «cena».После этого график рисуется впервые. После этого программа открывает соединение через веб-сокет на канале тикера и добавляет все новые цены в список «cena».После каждого обновления график перерисовывается.

Проблема возникает, когда первое (и каждое следующее) обновление из веб-сокета приходит и получает график.Внезапно появляется линия, возвращающаяся к началу, и график рисуется не из той части, где закончились исторические данные, а из начала image

Я предполагаю (но я делаюУ меня нет никаких доказательств в подтверждение этой теории) что проблема заключается в том, что я живу в другом часовом поясе, чем сервер, и где-то я смешиваю эти часовые пояса.

Code responsible for requesting historical data and ploting:
def Preignitor():
    end=(time.time()-3600)
    start=end-1800#86400
    for product_id in produkty:
        PR=Public_Requester()
        un_filtered=PR.Historic_rates_divider(start=start, end=end, skala=900, produkt=product_id)
        time.sleep(1)
        for v in range(len(un_filtered)):
            cena[produkty.index(product_id)].append(un_filtered[v][4])
            czas[produkty.index(product_id)].append(un_filtered[v][0])
def Preignitor_plot(produkty, cena, czas):
    fig=plt.figure()
    for x in range(len(produkty)):
        ax[x]=fig.add_subplot(len(produkty), 1 , 1+x)
        p[x], =ax[x].plot(czas[x], cena[x])
    plt.show(block=False)
def Plot_update(produkty, cena, czas):
    for x in range(len(produkty)):
        p[x].set_data(czas[x],cena[x])
        ax[x].relim()
        ax[x].autoscale_view()
    plt.pause(1e-3)

Code handling the ticker websocket updates:
while True:
    if q.not_empty:       # q is a queue, i use it to handle pasing data between threads    
        dane=q.get()        
        typ=dane.get('type',None)
        if typ=='ticker':
            price=dane.get('price', None)
            pair=dane.get('product_id',None)
            t=dane.get('time', None)            
            if t is not None:
                t=time.mktime(time.strptime(t, '%Y-%m-%dT%H:%M:%S.%fZ'))
                b=True
    if b==True:
        alfa=time.time()
        b=False
        produkt_id=produkty.index(pair)
        cena[produkt_id].append(float(price))
        czas[produkt_id].append(t)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...