Ошибка Matplotlib: x и y не имеют одинаковое первое измерение - PullRequest
0 голосов
/ 30 марта 2020

Я уже прочитал несколько тем на эту тему, но не нашел правильных решений.

Я использую следующий метод для рисования анимированной фигуры через некоторое время l oop:

        ax1.plot(x_vals, y_vals, 'ro')
        ax2.plot(x_vals_1, y_vals_1, 'bo')
        fig.canvas.draw()

y_vals - это список, который добавляется, когда я считываю данные из одного источника данных, а x_vals - это список, который добавляет приращение к счетчику выборок, т.е.

y_vals = [1,2,3] x_vals = [1,2,3]

y_vals_1 и x_vals_1 - это одно и то же понятие. Все 4 из них являются глобальными переменными, что означает, что они обновляются всякий раз, когда поступают данные, и они сразу отображаются. Я подозреваю, что может быть время, когда y_vals обновляется до того, как обновляется x_vals, и тогда, когда l oop пытается построить их с несоответствием по размеру, я получаю следующую ошибку: x и y не совпадают первое измерение.

Есть ли способ создать мои x_vals прямо перед y_vals, что очень быстро? (y_vals может стать очень большим по размеру). Или есть ли способ подачи только y_vals на диаграмму matplotlib, и он будет знать, что x_vals - это просто отсчет выборок?

1 Ответ

0 голосов
/ 30 марта 2020

Если x_vals является ничем иным, как отсчетом (от нуля), вы можете опустить его из вызова на plot():

ax1.plot(y_vals, 'ro')

... или вы можете сгенерировать его на the-fly, если он должен быть основан на одном:

ax1.plot(range(1, len(y_vals)+1), y_vals, 'ro')

В Python 3, range() сам по себе эффективен (он не выделяет место для всех значений len(y_vals) - он просто записывает значения start, stop и step-size), но я не знаю, сохраняется ли эта эффективность во внутренней части реализации plot().

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