Цвета линий в Matplolib

Есть график:

plt.xlabel('Length')
plt.ylabel('Time')
plt.axis([length_h[0], length_h[-1], time_tau[0], time_tau[-1]])
plt.plot(An[-1], U[-1])
plt.grid()
plt.show()

но цвета линий всегда одинаковые, если я разделяю plt.plot(An[-1], U[-1]) на два, то вид графика меняется. Как можно сделать два разных цвета для двух линий в одном plt.plot() Выходит вот такой график введите сюда описание изображения

А мне нужно чтобы эти линии были разных цветов

Если я их делю вот так:

plt.xlabel('Length')
plt.ylabel('Time')
plt.axis([length_h[0], length_h[-1], time_tau[0], time_tau[-1]])
plt.plot(An[-1], 'r')
plt.plot(U[-1], 'b')
plt.grid()
plt.show()

То график выглядеть начинает по-другому:

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

U

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

An

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


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

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

Не знаю как это сделать "из коробки", но наколхозить вручную можно легко по отдельным отрезкам:

import matplotlib.pyplot as plt

n = 4
x_arr = range(n)
y_arr = [i**2 for i in range(n)]
c_arr = ['red','green','blue']
for i in range(n-1):
    x = x_arr[i:i+2]
    y = y_arr[i:i+2]
    c = c_arr[i]
    plt.plot(x, y, color=c)

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

→ Ссылка
Автор решения: CrazyElf

Кажется, я понял. У вас данные "закольцованы". Тогда можно их так разделить попробовать:

import matplotlib.pyplot as plt

n = 4
x = [0, 1, 2, 1, 0]
y = [0, 1.25, 2, 0.75, 0]
x_max_ind = max(enumerate(x_arr), key=lambda x: x[1])[0]
plt.plot(x[:x_max_ind+1], y[:x_max_ind+1])
plt.plot(x[x_max_ind:], y[x_max_ind:])

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

→ Ссылка