циклический просмотр списка стилей линий при построении столбцов матрицы в matplotlib
-
20-12-2019 - |
Вопрос
Вероятно, я упускаю что-то очевидное.Я строю график данных, содержащихся в столбцах матрицы, за один вызов, используя
plot(x,A)
где x
представляет собой 1D-числовой диапазон с длиной, равной количеству строк A.Генерируемые при этом линейные диаграммы представляют собой все полные строки с цветовым циклом по умолчанию, установленным в matplotlib.rc
Я знаю, что могу изменить цветовой цикл (и даже могу иметь один цвет и стиль линии для всех столбцов).Однако, как я могу циклировать только стили линий (скажем, через полный, пунктирный, с тире-точкой, пунктирной точкой), а не цвет (я хочу сохранить его черным) и по-прежнему сохранять простой одиночный вызов графика?
plot(x,A,['k-','k--','k-.','k:'])
не работает.
Решение
Соответствующий источник находится в class _process_plot_var_args()
в axes.py
, как вы можете видеть, определен только цветовой цикл.Подобный цикл линейного стиля невозможен.
Поэтому нам нужно сделать следующее:
A=range(10)
B=np.random.randn(10,12)
p_list=plt.plot(A, B)
line_cycle=['-','--','-.',':']
_=[l.set_linestyle(st) for l, st in zip(p_list, np.repeat(line_cycle, 1+(len(p_list)/len(line_cycle))))]