Ответ на знаменитый вопрос «Как получить разноцветные линии для разных графиков на одной фигуре?» Я наткнулся на поведение, которое меня озадачило...
Проблема в том, чтобы получить разные цвета линий на разных участках, например:
In [29]: import numpy as np
...: import matplotlib.pyplot as plt
In [30]: fig, axes = plt.subplots(2,1)
In [31]: for ax in axes.flatten():
...: ax.plot((0,1), (0,1))

Как вы можете видетьобе строки синие - я могу понять, что это происходит потому, что у каждого ax
есть свой prop_cycle
.
. Я могу решить проблему, используя явное имя цвета
In [44]: fig, axes = plt.subplots(2,1)
In [45]: for ax, short_color_name in zip(axes.flatten(), 'brgkyc'):
...: ax.plot((0,1), (0,1), short_color_name)

но если я попытаюсь повторно использовать один и тот же cycler
объект ...
In [47]: my_cy = plt.rcParams['axes.prop_cycle']
In [48]: for ax in axes.flatten():
...: ax.set_prop_cycle(my_cy)
...: ax.plot((0,1), (0,1))
, я получу два вспомогательных участка с двумя синими линиями ...
В моем понимании, то, что я хотел бы сделать, невозможно, потому что ax
вызывает цикл, который возвращает itertools.cycle
, который в свою очередь фактически производит kwargs
при необходимости,но я все равно спрашиваю, потому что
В Matplotlib есть больше вещей, чем я мечтал в моей философии.