Один из графиков отображается как прямая линия
Представленный ниже код - функция для класса 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 шт):
Из того пример данных, который я вижу на картинке, каждое третье значение очень близко к нулю, там величины порядка 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:



