Как расскрасить отрезки графика разными цветами из списка значений?
Есть данные для графика:
p = [10, 10, 10, 11, 12, 13, 12, 11, 10, 10, 10, 11, 12, 13, 12, 11, 10, 10, 10]
И есть другие данные:
s = [1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 2, 1, 3, 3, 2, 1, 1, 2]
Где: p это график для plt.plot(p), а значения s - это раскраска для него разными цветами. Причём в s могут быть и другие значения, например 5 или 6 и т.п. - они всегда будут разными цветами.
Как расскрасить график по s?
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
import numpy as np
from matplotlib.pyplot import cm
uniq_colors = set(s)
n = len(uniq_colors)
x = np.arange(len(p))
p = np.array(p)
fig, ax = plt.subplots(figsize=(19, 3))
colors = {i:c for i,c in zip(uniq_colors, cm.rainbow(np.linspace(0,1,n)))}
for i in range(1, len(p)):
ax.plot(x[i-1:i+1], p[i-1:i+1], c=colors[s[i]])
