Один из графиков отображается как прямая линия

Представленный ниже код - функция для класса FuncAnimation для отрисовки динамически изменяющегося графика. В ys поступает список (проверено). Каждый элемент этого списка тоже список, внутри него три значения. Таким образом получается три графика. Как видно, все три графика отрисовываются, но третий по какой-то причине не меняется (прямая зеленая линия). Так же пример списка, что лежит в ys имеется.

def animate(i):
    ys = []
    if stabilizer.flagIsFrameNew:
        if len(stabilizer.tkTransformsList) > 40:
            ys = stabilizer.tkTransformsList[-40:-1]
        else:
            ys = stabilizer.tkTransformsList[:]
        ax.clear()
        ax.plot(ys)
        stabilizer.flagIsFrameNew = False

Пример графиков

Пример списка


Ответы (1 шт):

Автор решения: CrazyElf

Из того пример данных, который я вижу на картинке, каждое третье значение очень близко к нулю, там величины порядка 1e-5, вот они и отображаются как сплошная линия возле 0. Если хотите, чтобы они отображались как-то интереснее, то либо выносите их на отдельный от двух других график, в отдельной картинке, либо можете добавить к графику вторую ось y и рисовать этот третий график согласно этой оси. Вот код для второго варианта со случайными данными, похожими на ваши:

import numpy as np
import matplotlib.pyplot as plt

n = 40
y1 = (np.random.rand(n) - 0.5) * 0.01
y2 = (np.random.rand(n) - 0.5) * 0.02
y3 = (np.random.rand(n) - 0.5) * 1e-5
ys = np.column_stack((y1, y2, y3))

fig, ax = plt.subplots()
ax.plot(ys)
plt.show()

fig, ax1 = plt.subplots()

ax2 = ax1.twinx()
ax1.plot(np.column_stack((y1, y2)))
ax2.plot(y3, 'g')

plt.show()

График примерно как у вас:

введите сюда описание изображения

График с теми же данными и дополнительной осью y:

введите сюда описание изображения

→ Ссылка