Насколько мне известно, matplotlib объединяет только две ваши кривые, потому что вы предоставляете их как один набор данных. Это означает, что вам нужно вызвать plot
дважды, чтобы сгенерировать две кривые. Я поместил ваши данные в файл с именем data.csv
и написал следующий фрагмент кода:
import numpy
import matplotlib.pyplot as plt
data = numpy.genfromtxt('data.csv')
starts = numpy.asarray(data[:, 0] == 0).nonzero()[0]
fig, ax = plt.subplots(nrows=1, ncols=1, num=0, figsize=(16, 8))
for i in range(starts.shape[0]):
if i == starts.shape[0] - 1:
ax.plot(data[starts[i]:, 0], data[starts[i]:, 1])
else:
ax.plot(data[starts[i]:starts[i + 1], 0],
data[starts[i]:starts[i + 1], 1])
plt.show()
, который генерирует эту цифру

Что я делаю с starts
, так это то, что я ищу строки в первом столбце данных, которые содержат значение 0, которое я считаю началом новой кривой. Затем цикл генерирует кривую на каждой итерации. Оператор if
различает последнюю кривую и другие. Возможно, он более элегантный, но он работает.
Кроме того, не импортируйте pylab, его не рекомендуется использовать из-за ненужного заполнения пространства имен.