Цикл по цветам при построении графика в MATLAB

когда я строю несколько кривых на одном участке, используя hold on, каждая кривая по умолчанию имеет один и тот же цвет (синий). Я бы хотел, чтобы они были разных цветов.

одно из решений, которое я видел, - это сделать цветовой вектор, например c = ['k', 'g', 'r', ...] и петлю над ним, но мне не нравится это решение. Вещи сломаются, если мое количество участков больше длины моего цветового вектора c и я не хочу, чтобы определить c в каждом файле.

есть ли лучше решение?

2 ответов


попробуйте использовать . Ваши кривые должны автоматически перемещаться по цветовой карте. От help hold:

hold все держит график и текущий цвет линии и стиль линии так что последующие команды построения не сбрасывают ColorOrder и LineStyleOrder значения свойств в начале списка. Черчение команды продолжают циклический просмотр предопределенных цветов и линий стили, из которых последний график остановился в список.

вы можете изучить карту со get(gca,'ColorOrder').


вы также можете изменить значение по умолчанию 'ColorOrder' свойство глобальной среды делает:

set(0,'DefaultAxesColorOrder',hsv(10))

где я заменил цвета по умолчанию для набора из 10 цветов выданный hsv цвета. Конечно, вы также можете разместить любой другой набор цветов, используя любой из генераторов цветов colormap (hsv,hot,cooper,lines, ... используйте doc colormap для более подробной информации), как и раньше, или просто разместив любую матрицу n x 3. Если вы хотите использовать список цветов: {черный, зеленый, red} для текущей оси вы бы сделали:

set( gca,'ColorOrder', [0 0 0; 1 0 0; 0 1 0] )