График искаженной линии
Как построить график из таких данных:
[0,0,1,1,0,0,2,0,1,0,2,0,0,1,0,0,1,0,0,2,0,0,1,0,0]
Такого вида:

Где от 1 до 2х рисуется линия. Некоторые аспекты - рисуем по последней единице или двойке. Если значение например 0,1,1 - то берется последнее значение для нижней точки, а если ,0,1,0,0,1,0, то для низа также берется последнее значение 1.
Ответы (1 шт):
Автор решения: GrAnd
→ Ссылка
Из вашего описания не просто понять, как же именно требуется изобразить ломанную. Надеюсь я угадал.
data = [0,0,1,1,0,0,2,0,1,0,2,0,0,1,0,0,1,0,0,2,0,0,1,0,0]
# ^ ^ ^ ^ ^ ^ ^
# если я правильно понял, то надо найти выше отмеченные
# элементы списка и построить график
# где X = индекс элемента в списке
# а Y = значение самого элемента
points = [[0, 1]] # координаты [X,Y] первой точки
for i, value in enumerate(data):
if value == points[-1][1]:
# если значение то же, что и Y последней точки,
# то просто обновляем ей координату X
points[-1][0] = i
elif value:
# для ненулевого значения, которое не совпало
# с Y последней точки, создаём новую точку
points.append([i, value])
print(points)
# выводим график
import matplotlib.pyplot as plt
xx, yy = zip(*points)
plt.plot(xx, yy, "-ok")
plt.xticks(range(len(data)))
plt.yticks([1, 2])
plt.show()
Найденные точки:
[[3, 1], [6, 2], [8, 1], [10, 2], [16, 1], [19, 2], [22, 1]]
